From 3df21f705e5d3989cec3abbad04ff57cb7ccdebd Mon Sep 17 00:00:00 2001 From: lilyclements Date: Thu, 20 Oct 2022 15:38:35 +0100 Subject: [PATCH 01/88] Update summary_functions.R --- .../R/Backend_Components/summary_functions.R | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/Backend_Components/summary_functions.R b/instat/static/InstatObject/R/Backend_Components/summary_functions.R index f0656b97f2e..43bbd5e7249 100644 --- a/instat/static/InstatObject/R/Backend_Components/summary_functions.R +++ b/instat/static/InstatObject/R/Backend_Components/summary_functions.R @@ -225,6 +225,10 @@ DataBook$set("public", "calculate_summary", function(data_name, columns_to_summa } combined_calc_sum <- instat_calculation$new(type="combination", sub_calculations = sub_calculations, manipulations = manipulations) out <- self$apply_instat_calculation(combined_calc_sum) + # relocate so that the factors are first still for consistency + if (percentage_type != "none"){ + out$data <- (out$data %>% dplyr::select(c(tidyselect::all_of(factors), tidyselect::all_of(manip_factors)), tidyselect::everything())) + } if(return_output) { dat <- out$data if(percentage_type == "none" || perc_return_all) return(out$data) @@ -763,7 +767,11 @@ summary_quantile <- function(x, na.rm = FALSE, weights = NULL, probs, na_type = if(na.rm && na_type != "" && !na_check(x, na_type = na_type, ...)) return(NA) else { if(missing(weights) || is.null(weights)) { - return(quantile(x, na.rm = na.rm, probs = probs)[[1]]) + if("Date" %in% class(x)){ + return(quantile(x, na.rm = na.rm, probs = probs, type = 1)[[1]]) + } else { + return(quantile(x, na.rm = na.rm, probs = probs)[[1]]) + } } else { return(Hmisc::wtd.quantile(x, weights = weights, probs = probs, na.rm = na.rm)) From 821e02285868acedb823ec31057391f664921e58 Mon Sep 17 00:00:00 2001 From: Sophie Date: Thu, 3 Nov 2022 11:59:35 +0100 Subject: [PATCH 02/88] Minor modification on LinePlot Dialog --- instat/dlgLinePlot.designer.vb | 6 +++--- instat/dlgLinePlot.vb | 2 +- instat/translations/en/r_instat_not_menus.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/instat/dlgLinePlot.designer.vb b/instat/dlgLinePlot.designer.vb index f8840caa6e3..154a9025853 100644 --- a/instat/dlgLinePlot.designer.vb +++ b/instat/dlgLinePlot.designer.vb @@ -317,9 +317,9 @@ Partial Class dlgLinePlot ' Me.ucrChkAddSE.AutoSize = True Me.ucrChkAddSE.Checked = False - Me.ucrChkAddSE.Location = New System.Drawing.Point(195, 49) + Me.ucrChkAddSE.Location = New System.Drawing.Point(185, 51) Me.ucrChkAddSE.Name = "ucrChkAddSE" - Me.ucrChkAddSE.Size = New System.Drawing.Size(75, 23) + Me.ucrChkAddSE.Size = New System.Drawing.Size(82, 23) Me.ucrChkAddSE.TabIndex = 8 ' 'ucrNudSpan @@ -856,7 +856,7 @@ Partial Class dlgLinePlot Me.ucrSave.Location = New System.Drawing.Point(9, 442) Me.ucrSave.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ucrSave.Name = "ucrSave" - Me.ucrSave.Size = New System.Drawing.Size(346, 24) + Me.ucrSave.Size = New System.Drawing.Size(401, 24) Me.ucrSave.TabIndex = 31 ' 'ucrVariablesAsFactorForLinePlot diff --git a/instat/dlgLinePlot.vb b/instat/dlgLinePlot.vb index 6a561b14e82..f7596042d26 100644 --- a/instat/dlgLinePlot.vb +++ b/instat/dlgLinePlot.vb @@ -210,7 +210,7 @@ Public Class dlgLinePlot ucrPnlStepOrPath.AddFunctionNamesCondition(rdoStep, "geom_step") ucrChkPathOrStep.AddToLinkedControls(ucrPnlStepOrPath, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) - ucrChkPathOrStep.SetText("Use path or step") + ucrChkPathOrStep.SetText("Path or Step") ucrChkPathOrStep.AddFunctionNamesCondition(True, {"geom_step", "geom_path"}) ucrChkPathOrStep.AddFunctionNamesCondition(False, {"geom_step", "geom_path"}, False) diff --git a/instat/translations/en/r_instat_not_menus.json b/instat/translations/en/r_instat_not_menus.json index 460bc5d3a10..6ac10b839ad 100644 --- a/instat/translations/en/r_instat_not_menus.json +++ b/instat/translations/en/r_instat_not_menus.json @@ -3672,8 +3672,8 @@ "value": "value", "Dumbbell": "Dumbbell", "Line options": "Line options", - "Use path or step": "Use path or step", - "Smooth options": "Smooth options", + "Path or Step": "Path or Step", + "Smooth Options": "Smooth Options", "Add Line": "Add Line", "Add SE": "Add SE", "Formula": "Formula", From 54334ea0f1c97b6090ec2550f3975c978a36a37d Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 23 Nov 2022 10:41:17 +0100 Subject: [PATCH 03/88] Added apsimx package. --- instat/static/InstatObject/R/install_packages.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/install_packages.R b/instat/static/InstatObject/R/install_packages.R index 964d1d8b77e..3564f201925 100644 --- a/instat/static/InstatObject/R/install_packages.R +++ b/instat/static/InstatObject/R/install_packages.R @@ -131,7 +131,9 @@ pkgs <- "statip", # also install mmtable2 from GitHub devtools::install_github("ianmoran11/mmtable2") "corrr", - "dslabs" + "dslabs", + # For inspect, read, edit and run files for 'APSIM' + "apsimx" ) pkgList <- pkgDep(pkgs, type="win.binary", repos = "https://cran.rstudio.com/", suggests = FALSE, includeBasePkgs = FALSE, Rversion = r_version) pth <- "C:/Users/Christopher Marsh/Documents/RPackages" From a41934ba0ea2adb01c7ff688d3fc862e7a5d512b Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 23 Nov 2022 14:24:04 +0100 Subject: [PATCH 04/88] Added remotes package --- instat/static/InstatObject/R/install_packages.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/instat/static/InstatObject/R/install_packages.R b/instat/static/InstatObject/R/install_packages.R index ef37f5db692..c55a3d1888d 100644 --- a/instat/static/InstatObject/R/install_packages.R +++ b/instat/static/InstatObject/R/install_packages.R @@ -130,6 +130,8 @@ pkgs <- # For most frequent values in Prepare > Column:Numeric > Row Summaries "statip", # also install mmtable2 from GitHub devtools::install_github("ianmoran11/mmtable2") + #install.packages('remotes') + # also install aida-package from GitHub remotes::install_github('michael-franke/aida-package') "corrr", "dslabs", # For inspect, read, edit and run files for 'APSIM' From 3b205550a859d90496425538cb42d3f8fba05204 Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 23 Nov 2022 14:28:12 +0100 Subject: [PATCH 05/88] minor change --- instat/static/InstatObject/R/install_packages.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/install_packages.R b/instat/static/InstatObject/R/install_packages.R index c55a3d1888d..a2034347c88 100644 --- a/instat/static/InstatObject/R/install_packages.R +++ b/instat/static/InstatObject/R/install_packages.R @@ -130,7 +130,7 @@ pkgs <- # For most frequent values in Prepare > Column:Numeric > Row Summaries "statip", # also install mmtable2 from GitHub devtools::install_github("ianmoran11/mmtable2") - #install.packages('remotes') + # install.packages('remotes') # also install aida-package from GitHub remotes::install_github('michael-franke/aida-package') "corrr", "dslabs", From 948ad57d3a50dd2103ba91d1b8dbf781051c2432 Mon Sep 17 00:00:00 2001 From: lilyclements Date: Mon, 28 Nov 2022 15:00:07 +0000 Subject: [PATCH 06/88] Update summary_functions.R --- .../R/Backend_Components/summary_functions.R | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/instat/static/InstatObject/R/Backend_Components/summary_functions.R b/instat/static/InstatObject/R/Backend_Components/summary_functions.R index 43bbd5e7249..f4ae923e3f2 100644 --- a/instat/static/InstatObject/R/Backend_Components/summary_functions.R +++ b/instat/static/InstatObject/R/Backend_Components/summary_functions.R @@ -123,9 +123,7 @@ DataBook$set("public", "calculate_summary", function(data_name, columns_to_summa } if(!store_results) save <- 0 else save <- 2 - summaries_display <- as.vector(sapply(summaries, function(x) ifelse(startsWith(x, "summary_"), substring(x, 9), x))) - if(percentage_type == "factors") { manip_factors <- intersect(factors, perc_total_factors) } @@ -178,8 +176,9 @@ DataBook$set("public", "calculate_summary", function(data_name, columns_to_summa #TODO result_names could be horizontal/vertical vector, matrix or single value else result_name <- result_names[i,j] if(percentage_type == "none") { + summary_function_exp <- paste0(summary_type, "(x = ", column_names, function_exp) summary_calculation <- instat_calculation$new(type = type, result_name = result_name, - function_exp = paste0(summary_type, "(x = ", column_names, function_exp), + function_exp = summary_function_exp, calculated_from = calculated_from, save = save) } else { @@ -225,9 +224,9 @@ DataBook$set("public", "calculate_summary", function(data_name, columns_to_summa } combined_calc_sum <- instat_calculation$new(type="combination", sub_calculations = sub_calculations, manipulations = manipulations) out <- self$apply_instat_calculation(combined_calc_sum) - # relocate so that the factors are first still for consistency - if (percentage_type != "none"){ - out$data <- (out$data %>% dplyr::select(c(tidyselect::all_of(factors), tidyselect::all_of(manip_factors)), tidyselect::everything())) + # relocate so that the factors are first still for consistency + if (percentage_type != "none"){ + out$data <- (out$data %>% dplyr::select(c(tidyselect::all_of(factors), tidyselect::all_of(manip_factors)), tidyselect::everything())) } if(return_output) { dat <- out$data @@ -752,9 +751,12 @@ summary_median <- function(x, na.rm = FALSE, weights = NULL, na_type = "", ...) if(na.rm && na_type != "" && !na_check(x, na_type = na_type, ...)) return(NA) else{ if(missing(weights) || is.null(weights)) { - return(median(x, na.rm = na.rm)) - } - else { + if (stringr::str_detect(class(x), pattern = "ordered") || stringr::str_detect(class(x), pattern = "Date")) { + return(quantile(x, na.rm = na.rm, probs = 0.5, type = 1)[[1]]) + } else { + return(median(x, na.rm = na.rm)) + } + } else { return(Hmisc::wtd.quantile(x, weights = weights, probs = 0.5, na.rm = na.rm)) } } @@ -767,7 +769,7 @@ summary_quantile <- function(x, na.rm = FALSE, weights = NULL, probs, na_type = if(na.rm && na_type != "" && !na_check(x, na_type = na_type, ...)) return(NA) else { if(missing(weights) || is.null(weights)) { - if("Date" %in% class(x)){ + if (stringr::str_detect(class(x), pattern = "ordered") || stringr::str_detect(class(x), pattern = "Date")) { return(quantile(x, na.rm = na.rm, probs = probs, type = 1)[[1]]) } else { return(quantile(x, na.rm = na.rm, probs = probs)[[1]]) @@ -1368,6 +1370,7 @@ DataBook$set("public", "summary_table", function(data_name, columns_to_summarise } else { save <- 2 } + cell_values <- self$calculate_summary(data_name = data_name, columns_to_summarise = columns_to_summarise, summaries = summaries, factors = factors, store_results = FALSE, drop = drop, na.rm = na.rm, return_output = TRUE, weights = weights, result_names = result_names, percentage_type = percentage_type, perc_total_columns = perc_total_columns, perc_total_factors = perc_total_factors, perc_total_filter = perc_total_filter, perc_decimal = perc_decimal, include_counts_with_percentage = include_counts_with_percentage, margin_name = margin_name, additional_filter = additional_filter, perc_return_all = FALSE, signif_fig = signif_fig, sep = "__", ...) for (i in seq_along(factors)) { levels(cell_values[[i]]) <- c(levels(cell_values[[i]]), na_level_display) @@ -1502,10 +1505,12 @@ DataBook$set("public", "summary_table", function(data_name, columns_to_summarise dplyr::mutate_at(vars(-c(value)), ~forcats::as_factor(forcats::fct_relevel(.x, margin_name, after = Inf))) } } - if (percentage_type == "none" || include_counts_with_percentage == FALSE){ - shaped_cell_values <- shaped_cell_values %>% dplyr::mutate(value = as.numeric(as.character(value)), - value = round(value, signif_fig)) - } + # Used to make all values numeric, but stopped because of issues with ordered factors/dates. + # I don't think this line is needed anymore, but will keep it commented for now in case it becomes more apparent in the future + #if (percentage_type == "none" || include_counts_with_percentage == FALSE){ + # shaped_cell_values <- shaped_cell_values %>% dplyr::mutate(value = as.numeric(as.character(value)), + # value = round(value, signif_fig)) + #} if (treat_columns_as_factor && !is.null(columns_to_summarise)){ shaped_cell_values <- shaped_cell_values %>% dplyr::mutate(summary = as.factor(summary)) %>% dplyr::mutate(summary = forcats::fct_relevel(summary, summaries_display)) %>% From 4f8e29653309fa28b8515ad562f75a421010213e Mon Sep 17 00:00:00 2001 From: lilyclements Date: Mon, 28 Nov 2022 15:01:54 +0000 Subject: [PATCH 07/88] increasing summaries that ordered factors can do --- instat/static/InstatObject/R/Backend_Components/calculations.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/Backend_Components/calculations.R b/instat/static/InstatObject/R/Backend_Components/calculations.R index 22703f72bf7..ba47d32867e 100644 --- a/instat/static/InstatObject/R/Backend_Components/calculations.R +++ b/instat/static/InstatObject/R/Backend_Components/calculations.R @@ -482,7 +482,7 @@ DataBook$set("public", "apply_instat_calculation", function(calc, curr_data_list # if it is a ordered factor... if (any(stringr::str_detect("ordered", col_data_type))){ # put in here the ones that DO work for ordered factor - if (any(grepl("summary_count_non_missing|summary_count_missing|summary_count|summary_min|summary_max|summary_range", formula_fn_exp))){ + if (any(grepl("summary_count_non_missing|summary_count_missing|summary_count|summary_min|summary_max|summary_range|summary_median|summary_quantile|p10|p20|p25|p30|p33|p40|p60|p67|p70|p75|p80|p90", formula_fn_exp))){ curr_data_list[[c_data_label]] <- curr_data_list[[c_data_label]] %>% dplyr::summarise_(.dots = setNames(list(as.formula(paste0("~", calc$function_exp))), calc$result_name)) } else { From 7bff29659180a69829faf51a0e409a211a399e1b Mon Sep 17 00:00:00 2001 From: patowhiz Date: Tue, 29 Nov 2022 10:10:52 +0300 Subject: [PATCH 08/88] Follow up dialogs changes --- instat/dlgOneVariableSummarise.vb | 10 +++++----- instat/dlgRandomSample.designer.vb | 29 ++++++++++++++++------------- instat/dlgRandomSample.vb | 22 +++++++++++++--------- instat/dlgShowModel.vb | 29 ++++++++++++++++++++++------- 4 files changed, 56 insertions(+), 34 deletions(-) diff --git a/instat/dlgOneVariableSummarise.vb b/instat/dlgOneVariableSummarise.vb index 1a812f48b7e..aada418233a 100644 --- a/instat/dlgOneVariableSummarise.vb +++ b/instat/dlgOneVariableSummarise.vb @@ -172,11 +172,11 @@ Public Class dlgOneVariableSummarise clsSummaryFunction.SetRCommand("summary") clsSummaryFunction.AddParameter("maxsum", iMaxSum) clsSummaryFunction.AddParameter("na.rm", "FALSE", iPosition:=3) - clsSummaryFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", - strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Table, - strRObjectFormatToAssignTo:=RObjectFormat.Text, - strRDataFrameNameToAddObjectTo:=ucrSelectorOneVarSummarise.strCurrentDataFrame, - strObjectName:="last_summary") + clsSummaryFunction.SetAssignToOutputObject("last_summary", + RObjectTypeLabel.Summary, + RObjectFormat.Text, + ucrSelectorOneVarSummarise.strCurrentDataFrame, + "last_summary") clsSummaryTableFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$summary_table") clsSummaryTableFunction.AddParameter("treat_columns_as_factor", "TRUE", iPosition:=0) diff --git a/instat/dlgRandomSample.designer.vb b/instat/dlgRandomSample.designer.vb index 7ee509bd3cf..608a2b01ff3 100644 --- a/instat/dlgRandomSample.designer.vb +++ b/instat/dlgRandomSample.designer.vb @@ -49,7 +49,7 @@ Partial Class dlgRandomSample Me.ucrNudSeed = New instat.ucrNud() Me.ucrChkSetSeed = New instat.ucrCheck() Me.ucrSampleSize = New instat.ucrDataFrameLength() - Me.ucrSelectorRandomSamples = New instat.ucrDataFrame() + Me.ucrDataFrameRandomSamples = New instat.ucrDataFrame() Me.ucrDistWithParameters = New instat.ucrDistributionsWithParameters() Me.ucrBase = New instat.ucrButtons() Me.SuspendLayout() @@ -140,22 +140,25 @@ Partial Class dlgRandomSample ' 'ucrSampleSize ' + Me.ucrSampleSize.AddQuotesIfUnrecognised = True Me.ucrSampleSize.AutoSize = True + Me.ucrSampleSize.IsMultiline = False + Me.ucrSampleSize.IsReadOnly = True Me.ucrSampleSize.Location = New System.Drawing.Point(359, 152) Me.ucrSampleSize.Name = "ucrSampleSize" Me.ucrSampleSize.Size = New System.Drawing.Size(55, 23) Me.ucrSampleSize.TabIndex = 7 ' - 'ucrSelectorRandomSamples + 'ucrDataFrameRandomSamples ' - Me.ucrSelectorRandomSamples.AutoSize = True - Me.ucrSelectorRandomSamples.bDropUnusedFilterLevels = False - Me.ucrSelectorRandomSamples.bUseCurrentFilter = True - Me.ucrSelectorRandomSamples.Location = New System.Drawing.Point(10, 10) - Me.ucrSelectorRandomSamples.Margin = New System.Windows.Forms.Padding(0) - Me.ucrSelectorRandomSamples.Name = "ucrSelectorRandomSamples" - Me.ucrSelectorRandomSamples.Size = New System.Drawing.Size(153, 43) - Me.ucrSelectorRandomSamples.TabIndex = 0 + Me.ucrDataFrameRandomSamples.AutoSize = True + Me.ucrDataFrameRandomSamples.bDropUnusedFilterLevels = False + Me.ucrDataFrameRandomSamples.bUseCurrentFilter = True + Me.ucrDataFrameRandomSamples.Location = New System.Drawing.Point(10, 10) + Me.ucrDataFrameRandomSamples.Margin = New System.Windows.Forms.Padding(0) + Me.ucrDataFrameRandomSamples.Name = "ucrDataFrameRandomSamples" + Me.ucrDataFrameRandomSamples.Size = New System.Drawing.Size(153, 43) + Me.ucrDataFrameRandomSamples.TabIndex = 0 ' 'ucrDistWithParameters ' @@ -171,7 +174,7 @@ Partial Class dlgRandomSample Me.ucrBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.ucrBase.Location = New System.Drawing.Point(10, 262) Me.ucrBase.Name = "ucrBase" - Me.ucrBase.Size = New System.Drawing.Size(405, 52) + Me.ucrBase.Size = New System.Drawing.Size(408, 52) Me.ucrBase.TabIndex = 9 ' 'dlgRandomSample @@ -188,7 +191,7 @@ Partial Class dlgRandomSample Me.Controls.Add(Me.ucrSampleSize) Me.Controls.Add(Me.lblNumberofSamples) Me.Controls.Add(Me.lblSampleSize) - Me.Controls.Add(Me.ucrSelectorRandomSamples) + Me.Controls.Add(Me.ucrDataFrameRandomSamples) Me.Controls.Add(Me.ucrDistWithParameters) Me.Controls.Add(Me.ucrBase) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow @@ -204,7 +207,7 @@ Partial Class dlgRandomSample Friend WithEvents ucrBase As ucrButtons Friend WithEvents ucrDistWithParameters As ucrDistributionsWithParameters - Friend WithEvents ucrSelectorRandomSamples As ucrDataFrame + Friend WithEvents ucrDataFrameRandomSamples As ucrDataFrame Friend WithEvents lblSampleSize As Label Friend WithEvents lblNumberofSamples As Label Friend WithEvents ucrSampleSize As ucrDataFrameLength diff --git a/instat/dlgRandomSample.vb b/instat/dlgRandomSample.vb index bd9515c9759..15a63ca32c6 100644 --- a/instat/dlgRandomSample.vb +++ b/instat/dlgRandomSample.vb @@ -46,9 +46,9 @@ Public Class dlgRandomSample ucrNudNumberOfSamples.SetParameter(New RParameter("n", 0)) ucrNudNumberOfSamples.SetMinMax(1, Integer.MaxValue) - ucrSampleSize.SetDataFrameSelector(ucrSelectorRandomSamples) + ucrSampleSize.SetDataFrameSelector(ucrDataFrameRandomSamples) - ucrSelectorRandomSamples.bUseCurrentFilter = False + ucrDataFrameRandomSamples.bUseCurrentFilter = False ucrChkSetSeed.SetText("Set Seed") ucrChkSetSeed.AddRSyntaxContainsFunctionNamesCondition(True, {"set.seed"}) @@ -78,7 +78,7 @@ Public Class dlgRandomSample ttRngKind.SetToolTip(ucrChkRngKind.chkCheck, "Chooses a different Random Number Generator. Can usually be ignored.") ucrSaveRandomSample.SetSaveTypeAsColumn() - ucrSaveRandomSample.SetDataFrameSelector(ucrSelectorRandomSamples) + ucrSaveRandomSample.SetDataFrameSelector(ucrDataFrameRandomSamples) ucrSaveRandomSample.SetIsComboBox() End Sub @@ -89,7 +89,7 @@ Public Class dlgRandomSample clsRNGKindFunction = New RFunction ucrBase.clsRsyntax.ClearCodes() - ucrSelectorRandomSamples.Reset() + ucrDataFrameRandomSamples.Reset() ucrSaveRandomSample.Reset() SetNewColumName() @@ -107,8 +107,12 @@ Public Class dlgRandomSample clsMultipleSamplesFunction.AddParameter("expr", clsRFunctionParameter:=clsDistributionFunction, iPosition:=1) + clsMultipleSamplesFunction.SetAssignToColumnObject(ucrSaveRandomSample.GetText(), + ucrSaveRandomSample.GetText, + ucrDataFrameRandomSamples.cboAvailableDataFrames.Text, + bAssignToIsPrefix:=True) + ucrBase.clsRsyntax.SetBaseRFunction(clsMultipleSamplesFunction) - ucrBase.clsRsyntax.SetAssignTo(strAssignToName:=ucrSaveRandomSample.GetText, strTempDataframe:=ucrSelectorRandomSamples.cboAvailableDataFrames.Text, strTempColumn:=ucrSaveRandomSample.GetText, bAssignToIsPrefix:=True) SetDataFrameAndDistributionParameters() End Sub @@ -158,10 +162,10 @@ Public Class dlgRandomSample Private Sub SetDataFrameAndDistributionParameters() If ucrDistWithParameters.clsCurrDistribution.strRName = "hyper" Then - clsDistributionFunction.AddParameter("nn", ucrSelectorRandomSamples.iDataFrameLength) + clsDistributionFunction.AddParameter("nn", ucrDataFrameRandomSamples.iDataFrameLength) Else clsDistributionFunction.RemoveParameterByName("nn") - clsDistributionFunction.AddParameter("n", ucrSelectorRandomSamples.iDataFrameLength) + clsDistributionFunction.AddParameter("n", ucrDataFrameRandomSamples.iDataFrameLength) End If End Sub @@ -174,13 +178,13 @@ Public Class dlgRandomSample SetNewColumName() End Sub - Private Sub ucrSaveRandomSample_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrSaveRandomSample.ControlContentsChanged, ucrSelectorRandomSamples.ControlContentsChanged, + Private Sub ucrSaveRandomSample_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrSaveRandomSample.ControlContentsChanged, ucrDataFrameRandomSamples.ControlContentsChanged, ucrChkSetSeed.ControlContentsChanged, ucrNudSeed.ControlContentsChanged, ucrSampleSize.ControlContentsChanged, ucrInputRngKind.ControlContentsChanged, ucrChkRngKind.ControlContentsChanged TestOKEnabled() End Sub - Private Sub ucrSelectorRandomSamples_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorRandomSamples.ControlValueChanged + Private Sub ucrSelectorRandomSamples_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrDataFrameRandomSamples.ControlValueChanged SetDataFrameAndDistributionParameters() End Sub diff --git a/instat/dlgShowModel.vb b/instat/dlgShowModel.vb index b581ccd1c62..476f8b47c2f 100644 --- a/instat/dlgShowModel.vb +++ b/instat/dlgShowModel.vb @@ -182,16 +182,31 @@ Public Class dlgShowModel Private Sub SwitchBetweenSaveGraphOrColumn() clsPipeOperator.RemoveAssignTo() If rdoValues.Checked AndAlso ucrReceiverProbabilitiesOrValues.Visible Then - ucrBase.clsRsyntax.iCallType = 0 - clsPipeOperator.SetAssignTo(ucrSaveNewColumn.GetText(), strTempDataframe:=ucrSelectorShowModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=ucrSaveNewColumn.GetText) + clsPipeOperator.SetAssignToColumnObject(ucrSaveNewColumn.GetText(), + ucrSaveNewColumn.GetText, + ucrSelectorShowModel.strCurrentDataFrame, + bAssignToIsPrefix:=True) + ElseIf rdoGraph.Checked AndAlso ucrSaveGraph.ucrChkSave.Checked Then - ucrBase.clsRsyntax.iCallType = 3 - clsPipeOperator.SetAssignTo(ucrSaveGraph.GetText(), strTempDataframe:=ucrSelectorShowModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:=ucrSaveGraph.GetText) + clsPipeOperator.SetAssignToOutputObject(ucrSaveGraph.GetText(), + RObjectTypeLabel.Graph, + RObjectFormat.Image, + ucrSelectorShowModel.strCurrentDataFrame, + ucrSaveGraph.GetText()) + ElseIf rdoGraph.Checked AndAlso Not ucrSaveGraph.ucrChkSave.Checked Then - ucrBase.clsRsyntax.iCallType = 3 - clsPipeOperator.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorShowModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph", bAssignToIsPrefix:=True) + clsPipeOperator.SetAssignToOutputObject("last_graph", + RObjectTypeLabel.Graph, + RObjectFormat.Image, + ucrSelectorShowModel.strCurrentDataFrame, + "last_graph") + Else - ucrBase.clsRsyntax.iCallType = 2 + clsPipeOperator.SetAssignToOutputObject("last_summary", + RObjectTypeLabel.Summary, + RObjectFormat.Text, + ucrSelectorShowModel.strCurrentDataFrame, + "last_summary") End If End Sub From 3d578ab13103ef944d16f47deda192bc216b4467 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Thu, 1 Dec 2022 09:48:01 +0100 Subject: [PATCH 09/88] Menu Changes in Describe menu --- instat/frmMain.Designer.vb | 120 ++++++++++++++++++++----------------- instat/frmMain.vb | 2 +- 2 files changed, 66 insertions(+), 56 deletions(-) diff --git a/instat/frmMain.Designer.vb b/instat/frmMain.Designer.vb index 5954fa71178..c3fc5518d4b 100644 --- a/instat/frmMain.Designer.vb +++ b/instat/frmMain.Designer.vb @@ -57,10 +57,10 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator36 = New System.Windows.Forms.ToolStripSeparator() Me.mnuDescribeTwoThreeVariablesPivotTable = New System.Windows.Forms.ToolStripMenuItem() - Me.mnuDescribeSpecificTablesGraphs = New System.Windows.Forms.ToolStripMenuItem() + Me.mnuDescribeSpecificTables = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificSummary = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificMultipleResponse = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator26 = New System.Windows.Forms.ToolStripSeparator() + Me.mnuDescribeSpecificTablesGraphs = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificBarPieChart = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificBoxplotJitterViolinPlot = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificHistogramDensityFrequencyPlot = New System.Windows.Forms.ToolStripMenuItem() @@ -680,6 +680,7 @@ Partial Class frmMain Me.mnuDataFrameMetadata = New System.Windows.Forms.ToolStripMenuItem() Me.mnuScriptFile = New System.Windows.Forms.ToolStripMenuItem() Me.mnuLogFile = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator26 = New System.Windows.Forms.ToolStripSeparator() Me.stsStrip.SuspendLayout() Me.Tool_strip.SuspendLayout() Me.mnuBar.SuspendLayout() @@ -707,7 +708,7 @@ Partial Class frmMain ' 'mnuDescribe ' - Me.mnuDescribe.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeOneVariable, Me.mnuDescribeTwoThreeVariables, Me.mnuDescribeSpecificTablesGraphs, Me.mnuDescribeGeneral, Me.ToolStripSeparator9, Me.mnuDescribeMultivariate, Me.ToolStripSeparator13, Me.mnuDescribeUseGraph, Me.mnuDescribeCombineGraph, Me.mnuDescribeThemes, Me.mnuDescribeViewGraph}) + Me.mnuDescribe.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeOneVariable, Me.mnuDescribeTwoThreeVariables, Me.mnuDescribeSpecificTables, Me.mnuDescribeSpecificTablesGraphs, Me.mnuDescribeGeneral, Me.ToolStripSeparator9, Me.mnuDescribeMultivariate, Me.ToolStripSeparator13, Me.mnuDescribeUseGraph, Me.mnuDescribeCombineGraph, Me.mnuDescribeThemes, Me.mnuDescribeViewGraph}) Me.mnuDescribe.Name = "mnuDescribe" Me.mnuDescribe.Size = New System.Drawing.Size(64, 22) Me.mnuDescribe.Tag = "Describe" @@ -717,7 +718,7 @@ Partial Class frmMain ' Me.mnuDescribeOneVariable.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeOneVariableVisualiseData, Me.ToolStripSeparator72, Me.mnuDescribeOneVariableSummarise, Me.mnuDescribeOneVariableGraph, Me.ToolStripSeparator33, Me.mnuDescribeOneVariableFrequencies, Me.mnuDescribeOneVariableRatingData}) Me.mnuDescribeOneVariable.Name = "mnuDescribeOneVariable" - Me.mnuDescribeOneVariable.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeOneVariable.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeOneVariable.Tag = "One_Variable" Me.mnuDescribeOneVariable.Text = "One Variable" ' @@ -765,9 +766,9 @@ Partial Class frmMain ' 'mnuDescribeTwoThreeVariables ' - Me.mnuDescribeTwoThreeVariables.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeTwoVariablesSummarise, Me.mnuDescribeTwoVariablesGraph, Me.ToolStripSeparator34, Me.mnuDescribeTwoThreeVariablesCorrelations, Me.mnuDescribeTwoThreeVariablesTwoWayFrequencies, Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies, Me.ToolStripSeparator36, Me.mnuDescribeTwoThreeVariablesPivotTable}) + Me.mnuDescribeTwoThreeVariables.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeTwoThreeVariablesPivotTable, Me.ToolStripSeparator36, Me.mnuDescribeTwoVariablesSummarise, Me.mnuDescribeTwoVariablesGraph, Me.ToolStripSeparator34, Me.mnuDescribeTwoThreeVariablesCorrelations, Me.mnuDescribeTwoThreeVariablesTwoWayFrequencies, Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies}) Me.mnuDescribeTwoThreeVariables.Name = "mnuDescribeTwoThreeVariables" - Me.mnuDescribeTwoThreeVariables.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeTwoThreeVariables.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeTwoThreeVariables.Tag = "Two_Variables" Me.mnuDescribeTwoThreeVariables.Text = "Two/Three Variables" ' @@ -821,18 +822,18 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariablesPivotTable.Size = New System.Drawing.Size(206, 22) Me.mnuDescribeTwoThreeVariablesPivotTable.Text = "Pivot Table..." ' - 'mnuDescribeSpecificTablesGraphs + 'mnuDescribeSpecificTables ' - Me.mnuDescribeSpecificTablesGraphs.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificSummary, Me.mnuDescribeSpecificMultipleResponse, Me.ToolStripSeparator26, Me.mnuDescribeSpecificBarPieChart, Me.mnuDescribeSpecificBoxplotJitterViolinPlot, Me.mnuDescribeSpecificHistogramDensityFrequencyPlot, Me.mnuDescribeSpecificPointPlot, Me.mnuDescribeSpecificLineSmoothPlot, Me.mnuDescribeSpecificMapPlot, Me.mnuDescribeSpecificDotPlot, Me.ToolStripSeparator27, Me.mnuDescribeSpecificMosaic, Me.mnuDescribeSpecificCummulativeDistribution, Me.mnuDescribeSpecificParallelCoordinatePlot}) - Me.mnuDescribeSpecificTablesGraphs.Name = "mnuDescribeSpecificTablesGraphs" - Me.mnuDescribeSpecificTablesGraphs.Size = New System.Drawing.Size(192, 22) - Me.mnuDescribeSpecificTablesGraphs.Tag = "Table_Dialogs" - Me.mnuDescribeSpecificTablesGraphs.Text = "Specific Tables/Graphs" + Me.mnuDescribeSpecificTables.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificSummary, Me.mnuDescribeSpecificMultipleResponse}) + Me.mnuDescribeSpecificTables.Name = "mnuDescribeSpecificTables" + Me.mnuDescribeSpecificTables.Size = New System.Drawing.Size(180, 22) + Me.mnuDescribeSpecificTables.Tag = "Table_Dialogs" + Me.mnuDescribeSpecificTables.Text = "Tables" ' 'mnuDescribeSpecificSummary ' Me.mnuDescribeSpecificSummary.Name = "mnuDescribeSpecificSummary" - Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(229, 22) Me.mnuDescribeSpecificSummary.Tag = "Summary..." Me.mnuDescribeSpecificSummary.Text = "Frequency/Summary Tables..." ' @@ -840,62 +841,65 @@ Partial Class frmMain ' Me.mnuDescribeSpecificMultipleResponse.Enabled = False Me.mnuDescribeSpecificMultipleResponse.Name = "mnuDescribeSpecificMultipleResponse" - Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(299, 22) - Me.mnuDescribeSpecificMultipleResponse.Tag = "Multiple_Response..." + Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(229, 22) + Me.mnuDescribeSpecificMultipleResponse.Tag = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Text = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Visible = False ' - 'ToolStripSeparator26 + 'mnuDescribeSpecificTablesGraphs ' - Me.ToolStripSeparator26.Name = "ToolStripSeparator26" - Me.ToolStripSeparator26.Size = New System.Drawing.Size(296, 6) + Me.mnuDescribeSpecificTablesGraphs.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificBarPieChart, Me.mnuDescribeSpecificBoxplotJitterViolinPlot, Me.mnuDescribeSpecificHistogramDensityFrequencyPlot, Me.mnuDescribeSpecificPointPlot, Me.mnuDescribeSpecificLineSmoothPlot, Me.ToolStripSeparator26, Me.mnuDescribeSpecificMapPlot, Me.mnuDescribeSpecificDotPlot, Me.ToolStripSeparator27, Me.mnuDescribeSpecificMosaic, Me.mnuDescribeSpecificCummulativeDistribution, Me.mnuDescribeSpecificParallelCoordinatePlot}) + Me.mnuDescribeSpecificTablesGraphs.Name = "mnuDescribeSpecificTablesGraphs" + Me.mnuDescribeSpecificTablesGraphs.Size = New System.Drawing.Size(180, 22) + Me.mnuDescribeSpecificTablesGraphs.Tag = "Graph_Dialogs" + Me.mnuDescribeSpecificTablesGraphs.Text = "Graphs" ' 'mnuDescribeSpecificBarPieChart ' Me.mnuDescribeSpecificBarPieChart.Name = "mnuDescribeSpecificBarPieChart" - Me.mnuDescribeSpecificBarPieChart.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificBarPieChart.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificBarPieChart.Tag = "Bar_Chart" Me.mnuDescribeSpecificBarPieChart.Text = "Bar Chart..." ' 'mnuDescribeSpecificBoxplotJitterViolinPlot ' Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Name = "mnuDescribeSpecificBoxplotJitterViolinPlot" - Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Tag = "Boxplot..." - Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Text = "Boxplot/Jitter/Violin Plot..." + Me.mnuDescribeSpecificBoxplotJitterViolinPlot.Text = "Boxplot..." ' 'mnuDescribeSpecificHistogramDensityFrequencyPlot ' Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Name = "mnuDescribeSpecificHistogramDensityFrequencyPlot" - Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Tag = "Histogram..." - Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Text = "Histogram/Density/Frequency Plot..." + Me.mnuDescribeSpecificHistogramDensityFrequencyPlot.Text = "Histogram..." ' 'mnuDescribeSpecificPointPlot ' Me.mnuDescribeSpecificPointPlot.Name = "mnuDescribeSpecificPointPlot" - Me.mnuDescribeSpecificPointPlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificPointPlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificPointPlot.Tag = "Point_Plot..." - Me.mnuDescribeSpecificPointPlot.Text = "Point (Scatter) Plot..." + Me.mnuDescribeSpecificPointPlot.Text = "Scatter Plot..." ' 'mnuDescribeSpecificLineSmoothPlot ' Me.mnuDescribeSpecificLineSmoothPlot.Name = "mnuDescribeSpecificLineSmoothPlot" - Me.mnuDescribeSpecificLineSmoothPlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificLineSmoothPlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificLineSmoothPlot.Tag = "Line_Plot..." - Me.mnuDescribeSpecificLineSmoothPlot.Text = "Line/Smooth/Dumbbell/Slope Plot..." + Me.mnuDescribeSpecificLineSmoothPlot.Text = "Line Plot..." ' 'mnuDescribeSpecificMapPlot ' Me.mnuDescribeSpecificMapPlot.Name = "mnuDescribeSpecificMapPlot" - Me.mnuDescribeSpecificMapPlot.Size = New System.Drawing.Size(299, 22) - Me.mnuDescribeSpecificMapPlot.Text = "Map/Choropleth/Contour/Heatmap Plot..." + Me.mnuDescribeSpecificMapPlot.Size = New System.Drawing.Size(209, 22) + Me.mnuDescribeSpecificMapPlot.Text = "Heatmap..." ' 'mnuDescribeSpecificDotPlot ' Me.mnuDescribeSpecificDotPlot.Enabled = False Me.mnuDescribeSpecificDotPlot.Name = "mnuDescribeSpecificDotPlot" - Me.mnuDescribeSpecificDotPlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificDotPlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificDotPlot.Tag = "Dotplot..." Me.mnuDescribeSpecificDotPlot.Text = "Dot Plot..." Me.mnuDescribeSpecificDotPlot.Visible = False @@ -903,31 +907,31 @@ Partial Class frmMain 'ToolStripSeparator27 ' Me.ToolStripSeparator27.Name = "ToolStripSeparator27" - Me.ToolStripSeparator27.Size = New System.Drawing.Size(296, 6) + Me.ToolStripSeparator27.Size = New System.Drawing.Size(206, 6) ' 'mnuDescribeSpecificMosaic ' Me.mnuDescribeSpecificMosaic.Name = "mnuDescribeSpecificMosaic" - Me.mnuDescribeSpecificMosaic.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificMosaic.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificMosaic.Text = "Mosaic Plot..." ' 'mnuDescribeSpecificCummulativeDistribution ' Me.mnuDescribeSpecificCummulativeDistribution.Name = "mnuDescribeSpecificCummulativeDistribution" - Me.mnuDescribeSpecificCummulativeDistribution.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificCummulativeDistribution.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificCummulativeDistribution.Text = "Cumulative Distribution..." ' 'mnuDescribeSpecificParallelCoordinatePlot ' Me.mnuDescribeSpecificParallelCoordinatePlot.Name = "mnuDescribeSpecificParallelCoordinatePlot" - Me.mnuDescribeSpecificParallelCoordinatePlot.Size = New System.Drawing.Size(299, 22) + Me.mnuDescribeSpecificParallelCoordinatePlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificParallelCoordinatePlot.Text = "Parallel Coordinate Plot..." ' 'mnuDescribeGeneral ' Me.mnuDescribeGeneral.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeGeneralColumnSummaries, Me.mnuDescribeGeneralTabulation, Me.mnuDescribeGeneralGraphics, Me.ToolStripSeparator38, Me.mnuDescribeGeneralUseSummaries}) Me.mnuDescribeGeneral.Name = "mnuDescribeGeneral" - Me.mnuDescribeGeneral.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeGeneral.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeGeneral.Tag = "General" Me.mnuDescribeGeneral.Text = "General" ' @@ -968,13 +972,13 @@ Partial Class frmMain 'ToolStripSeparator9 ' Me.ToolStripSeparator9.Name = "ToolStripSeparator9" - Me.ToolStripSeparator9.Size = New System.Drawing.Size(189, 6) + Me.ToolStripSeparator9.Size = New System.Drawing.Size(177, 6) ' 'mnuDescribeMultivariate ' Me.mnuDescribeMultivariate.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeMultivariateCorrelations, Me.mnuDescribeMultivariateprincipalComponents, Me.mnuDescribeMultivariateCanonicalCorrelations, Me.mnuDescribeMultivariateClusterAnalysis}) Me.mnuDescribeMultivariate.Name = "mnuDescribeMultivariate" - Me.mnuDescribeMultivariate.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeMultivariate.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeMultivariate.Text = "Multivariate" ' 'mnuDescribeMultivariateCorrelations @@ -1004,32 +1008,32 @@ Partial Class frmMain 'ToolStripSeparator13 ' Me.ToolStripSeparator13.Name = "ToolStripSeparator13" - Me.ToolStripSeparator13.Size = New System.Drawing.Size(189, 6) + Me.ToolStripSeparator13.Size = New System.Drawing.Size(177, 6) ' 'mnuDescribeUseGraph ' Me.mnuDescribeUseGraph.Name = "mnuDescribeUseGraph" - Me.mnuDescribeUseGraph.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeUseGraph.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeUseGraph.Text = "Use Graph..." ' 'mnuDescribeCombineGraph ' Me.mnuDescribeCombineGraph.Name = "mnuDescribeCombineGraph" - Me.mnuDescribeCombineGraph.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeCombineGraph.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeCombineGraph.Text = "Combine Graphs..." ' 'mnuDescribeThemes ' Me.mnuDescribeThemes.Enabled = False Me.mnuDescribeThemes.Name = "mnuDescribeThemes" - Me.mnuDescribeThemes.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeThemes.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeThemes.Text = "Themes..." Me.mnuDescribeThemes.Visible = False ' 'mnuDescribeViewGraph ' Me.mnuDescribeViewGraph.Name = "mnuDescribeViewGraph" - Me.mnuDescribeViewGraph.Size = New System.Drawing.Size(192, 22) + Me.mnuDescribeViewGraph.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeViewGraph.Text = "View Graph..." ' 'mnuModel @@ -3129,19 +3133,19 @@ Partial Class frmMain 'mnuNormalViewer ' Me.mnuNormalViewer.Name = "mnuNormalViewer" - Me.mnuNormalViewer.Size = New System.Drawing.Size(180, 22) + Me.mnuNormalViewer.Size = New System.Drawing.Size(128, 22) Me.mnuNormalViewer.Text = "Viewer..." ' 'mnuploty ' Me.mnuploty.Name = "mnuploty" - Me.mnuploty.Size = New System.Drawing.Size(180, 22) + Me.mnuploty.Size = New System.Drawing.Size(128, 22) Me.mnuploty.Text = "Plotly..." ' 'mnuRViewer ' Me.mnuRViewer.Name = "mnuRViewer" - Me.mnuRViewer.Size = New System.Drawing.Size(180, 22) + Me.mnuRViewer.Size = New System.Drawing.Size(128, 22) Me.mnuRViewer.Text = "R Viewer..." ' 'separator2 @@ -3857,35 +3861,35 @@ Partial Class frmMain 'mnuPrepareColumnTextFindReplace ' Me.mnuPrepareColumnTextFindReplace.Name = "mnuPrepareColumnTextFindReplace" - Me.mnuPrepareColumnTextFindReplace.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextFindReplace.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextFindReplace.Tag = "Find/Replace..." Me.mnuPrepareColumnTextFindReplace.Text = "Find/Replace..." ' 'mnuPrepareColumnTextSearch ' Me.mnuPrepareColumnTextSearch.Name = "mnuPrepareColumnTextSearch" - Me.mnuPrepareColumnTextSearch.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextSearch.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextSearch.Text = "Search..." Me.mnuPrepareColumnTextSearch.Visible = False ' 'mnuPrepareColumnTextTransform ' Me.mnuPrepareColumnTextTransform.Name = "mnuPrepareColumnTextTransform" - Me.mnuPrepareColumnTextTransform.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextTransform.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextTransform.Tag = "Transform..." Me.mnuPrepareColumnTextTransform.Text = "Transform..." ' 'mnuPrepareColumnTextSplit ' Me.mnuPrepareColumnTextSplit.Name = "mnuPrepareColumnTextSplit" - Me.mnuPrepareColumnTextSplit.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextSplit.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextSplit.Tag = "Split..." Me.mnuPrepareColumnTextSplit.Text = "Split..." ' 'mnuPrepareColumnTextCombine ' Me.mnuPrepareColumnTextCombine.Name = "mnuPrepareColumnTextCombine" - Me.mnuPrepareColumnTextCombine.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextCombine.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextCombine.Tag = "Combine..." Me.mnuPrepareColumnTextCombine.Text = "Combine..." ' @@ -3893,7 +3897,7 @@ Partial Class frmMain ' Me.mnuPrepareColumnTextMatch.Enabled = False Me.mnuPrepareColumnTextMatch.Name = "mnuPrepareColumnTextMatch" - Me.mnuPrepareColumnTextMatch.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextMatch.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextMatch.Tag = "Match..." Me.mnuPrepareColumnTextMatch.Text = "Match..." Me.mnuPrepareColumnTextMatch.Visible = False @@ -3901,7 +3905,7 @@ Partial Class frmMain 'mnuPrepareColumnTextDistance ' Me.mnuPrepareColumnTextDistance.Name = "mnuPrepareColumnTextDistance" - Me.mnuPrepareColumnTextDistance.Size = New System.Drawing.Size(180, 22) + Me.mnuPrepareColumnTextDistance.Size = New System.Drawing.Size(152, 22) Me.mnuPrepareColumnTextDistance.Tag = "Distance..." Me.mnuPrepareColumnTextDistance.Text = "Distance..." ' @@ -5128,6 +5132,11 @@ Partial Class frmMain Me.mnuLogFile.Text = "Log Window..." Me.mnuLogFile.ToolTipText = "Log Window" ' + 'ToolStripSeparator26 + ' + Me.ToolStripSeparator26.Name = "ToolStripSeparator26" + Me.ToolStripSeparator26.Size = New System.Drawing.Size(206, 6) + ' 'frmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) @@ -5322,8 +5331,6 @@ Partial Class frmMain Friend WithEvents mnuDescribeGeneralTabulation As ToolStripMenuItem Friend WithEvents mnuDescribeGeneralGraphics As ToolStripMenuItem Friend WithEvents mnuDescribeSpecificTablesGraphs As ToolStripMenuItem - Friend WithEvents mnuDescribeSpecificSummary As ToolStripMenuItem - Friend WithEvents mnuDescribeSpecificMultipleResponse As ToolStripMenuItem Friend WithEvents mnuModelProbabilityDistributions As ToolStripMenuItem Friend WithEvents mnuModelProbabilityDistributionsCompareModels As ToolStripMenuItem Friend WithEvents mnuModelProbabilityDistributionsRandomSamplesUseModel As ToolStripMenuItem @@ -5431,7 +5438,6 @@ Partial Class frmMain Friend WithEvents mnuDescribeThemes As ToolStripMenuItem Friend WithEvents mnuClimaticDescribe As ToolStripMenuItem Friend WithEvents mnuClimaticPrepareSummary As ToolStripMenuItem - Friend WithEvents ToolStripSeparator26 As ToolStripSeparator Friend WithEvents mnuDescribeSpecificPointPlot As ToolStripMenuItem Friend WithEvents mnuDescribeSpecificLineSmoothPlot As ToolStripMenuItem Friend WithEvents mnuDescribeSpecificHistogramDensityFrequencyPlot As ToolStripMenuItem @@ -5826,4 +5832,8 @@ Partial Class frmMain Friend WithEvents mnuNormalViewer As ToolStripMenuItem Friend WithEvents mnuEditWordwrap As ToolStripMenuItem Friend WithEvents mnuPrepareColumnTextSearch As ToolStripMenuItem + Friend WithEvents mnuDescribeSpecificTables As ToolStripMenuItem + Friend WithEvents mnuDescribeSpecificSummary As ToolStripMenuItem + Friend WithEvents mnuDescribeSpecificMultipleResponse As ToolStripMenuItem + Friend WithEvents ToolStripSeparator26 As ToolStripSeparator End Class diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 4af14c67edf..338a58ed30a 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -407,7 +407,7 @@ Public Class frmMain dlgRegularSequence.ShowDialog() End Sub - Private Sub SummaryToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles mnuDescribeSpecificSummary.Click + Private Sub mnuDescribeSpecificSummary_Click(sender As Object, e As EventArgs) Handles mnuDescribeSpecificSummary.Click dlgSummaryTables.ShowDialog() End Sub From 543c2a60048211e6fba728c4c6aad11393f92291 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Thu, 1 Dec 2022 17:10:59 +0100 Subject: [PATCH 10/88] Design changes --- instat/frmMain.Designer.vb | 81 ++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/instat/frmMain.Designer.vb b/instat/frmMain.Designer.vb index d8edfefbd68..e889d1d47f8 100644 --- a/instat/frmMain.Designer.vb +++ b/instat/frmMain.Designer.vb @@ -49,14 +49,14 @@ Partial Class frmMain Me.mnuDescribeOneVariableFrequencies = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeOneVariableRatingData = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoThreeVariables = New System.Windows.Forms.ToolStripMenuItem() + Me.mnuDescribeTwoThreeVariablesPivotTable = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator36 = New System.Windows.Forms.ToolStripSeparator() Me.mnuDescribeTwoVariablesSummarise = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoVariablesGraph = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator34 = New System.Windows.Forms.ToolStripSeparator() Me.mnuDescribeTwoThreeVariablesCorrelations = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoThreeVariablesTwoWayFrequencies = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator36 = New System.Windows.Forms.ToolStripSeparator() - Me.mnuDescribeTwoThreeVariablesPivotTable = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificTables = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificSummary = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificMultipleResponse = New System.Windows.Forms.ToolStripMenuItem() @@ -66,6 +66,7 @@ Partial Class frmMain Me.mnuDescribeSpecificHistogramDensityFrequencyPlot = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificPointPlot = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificLineSmoothPlot = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator26 = New System.Windows.Forms.ToolStripSeparator() Me.mnuDescribeSpecificMapPlot = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificDotPlot = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator27 = New System.Windows.Forms.ToolStripSeparator() @@ -653,6 +654,7 @@ Partial Class frmMain Me.mnuOptionsByContextModelFitModel = New System.Windows.Forms.ToolStripMenuItem() Me.mnuOptionsByContextGeneralFitModel = New System.Windows.Forms.ToolStripMenuItem() Me.mnuOptionsByContextCropModel = New System.Windows.Forms.ToolStripMenuItem() + Me.mnuOptionsByContextCropModelApsimxExamples = New System.Windows.Forms.ToolStripMenuItem() Me.mnuTools = New System.Windows.Forms.ToolStripMenuItem() Me.mnuToolsRunRCode = New System.Windows.Forms.ToolStripMenuItem() Me.mnuToolsRestartR = New System.Windows.Forms.ToolStripMenuItem() @@ -680,11 +682,6 @@ Partial Class frmMain Me.mnuDataFrameMetadata = New System.Windows.Forms.ToolStripMenuItem() Me.mnuScriptFile = New System.Windows.Forms.ToolStripMenuItem() Me.mnuLogFile = New System.Windows.Forms.ToolStripMenuItem() - - Me.ToolStripSeparator26 = New System.Windows.Forms.ToolStripSeparator() - - Me.mnuOptionsByContextCropModelApsimxExamples = New System.Windows.Forms.ToolStripMenuItem() - Me.stsStrip.SuspendLayout() Me.Tool_strip.SuspendLayout() Me.mnuBar.SuspendLayout() @@ -776,6 +773,17 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariables.Tag = "Two_Variables" Me.mnuDescribeTwoThreeVariables.Text = "Two/Three Variables" ' + 'mnuDescribeTwoThreeVariablesPivotTable + ' + Me.mnuDescribeTwoThreeVariablesPivotTable.Name = "mnuDescribeTwoThreeVariablesPivotTable" + Me.mnuDescribeTwoThreeVariablesPivotTable.Size = New System.Drawing.Size(206, 22) + Me.mnuDescribeTwoThreeVariablesPivotTable.Text = "Pivot Table..." + ' + 'ToolStripSeparator36 + ' + Me.ToolStripSeparator36.Name = "ToolStripSeparator36" + Me.ToolStripSeparator36.Size = New System.Drawing.Size(203, 6) + ' 'mnuDescribeTwoVariablesSummarise ' Me.mnuDescribeTwoVariablesSummarise.DoubleClickEnabled = True @@ -815,17 +823,6 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies.Size = New System.Drawing.Size(206, 22) Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies.Text = "Three-Way Frequencies..." ' - 'ToolStripSeparator36 - ' - Me.ToolStripSeparator36.Name = "ToolStripSeparator36" - Me.ToolStripSeparator36.Size = New System.Drawing.Size(203, 6) - ' - 'mnuDescribeTwoThreeVariablesPivotTable - ' - Me.mnuDescribeTwoThreeVariablesPivotTable.Name = "mnuDescribeTwoThreeVariablesPivotTable" - Me.mnuDescribeTwoThreeVariablesPivotTable.Size = New System.Drawing.Size(206, 22) - Me.mnuDescribeTwoThreeVariablesPivotTable.Text = "Pivot Table..." - ' 'mnuDescribeSpecificTables ' Me.mnuDescribeSpecificTables.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificSummary, Me.mnuDescribeSpecificMultipleResponse}) @@ -837,15 +834,15 @@ Partial Class frmMain 'mnuDescribeSpecificSummary ' Me.mnuDescribeSpecificSummary.Name = "mnuDescribeSpecificSummary" - Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(229, 22) + Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeSpecificSummary.Tag = "Summary..." - Me.mnuDescribeSpecificSummary.Text = "Frequency/Summary Tables..." + Me.mnuDescribeSpecificSummary.Text = "Frequency..." ' 'mnuDescribeSpecificMultipleResponse ' Me.mnuDescribeSpecificMultipleResponse.Enabled = False Me.mnuDescribeSpecificMultipleResponse.Name = "mnuDescribeSpecificMultipleResponse" - Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(229, 22) + Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeSpecificMultipleResponse.Tag = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Text = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Visible = False @@ -893,6 +890,11 @@ Partial Class frmMain Me.mnuDescribeSpecificLineSmoothPlot.Tag = "Line_Plot..." Me.mnuDescribeSpecificLineSmoothPlot.Text = "Line Plot..." ' + 'ToolStripSeparator26 + ' + Me.ToolStripSeparator26.Name = "ToolStripSeparator26" + Me.ToolStripSeparator26.Size = New System.Drawing.Size(206, 6) + ' 'mnuDescribeSpecificMapPlot ' Me.mnuDescribeSpecificMapPlot.Name = "mnuDescribeSpecificMapPlot" @@ -4702,7 +4704,7 @@ Partial Class frmMain ' Me.mnuOptionsByContextCheckData.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextCheckDataDuplicateRows, Me.mnuOptionsByContextCheckDataCompareColumns, Me.ToolStripSeparator47, Me.mnuOptionsByContextCheckDataOneVariableSummarise, Me.mnuOptionsByContextCheckDataOneVariableGraph, Me.mnuOptionsByContextCheckDataOneVariableFrequencies}) Me.mnuOptionsByContextCheckData.Name = "mnuOptionsByContextCheckData" - Me.mnuOptionsByContextCheckData.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextCheckData.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextCheckData.Text = "Check Data" ' 'mnuOptionsByContextCheckDataDuplicateRows @@ -4744,7 +4746,7 @@ Partial Class frmMain ' Me.mnuOptionsByContextDefine.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextDefineOnStation, Me.mnuOptionsByContextDefineOnFarm}) Me.mnuOptionsByContextDefine.Name = "mnuOptionsByContextDefine" - Me.mnuOptionsByContextDefine.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextDefine.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextDefine.Text = "Define" ' 'mnuOptionsByContextDefineOnStation @@ -4763,7 +4765,7 @@ Partial Class frmMain ' Me.mnuOptionsByContextPrepare.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextPrepareCalculateDIfferenceBetweenOptions, Me.ToolStripSeparator48, Me.mnuOptionsByContextMergeAdditionalData, Me.mnuOptionsByContextPrepareStack, Me.mnuOptionsByContextPrepareUnstack}) Me.mnuOptionsByContextPrepare.Name = "mnuOptionsByContextPrepare" - Me.mnuOptionsByContextPrepare.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextPrepare.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextPrepare.Text = "Prepare" ' 'mnuOptionsByContextPrepareCalculateDIfferenceBetweenOptions @@ -4799,7 +4801,7 @@ Partial Class frmMain ' Me.mnuOptionsByContextDescribe.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextDescribeCompareTwoTreatments, Me.mnuOptionsByContextDescribeCompareMultipleTreatments, Me.mnuOptionsByContextDescribeBoxplot}) Me.mnuOptionsByContextDescribe.Name = "mnuOptionsByContextDescribe" - Me.mnuOptionsByContextDescribe.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextDescribe.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextDescribe.Text = "Describe" ' 'mnuOptionsByContextDescribeCompareTwoTreatments @@ -4825,28 +4827,34 @@ Partial Class frmMain ' Me.mnuOptionsByContextModel.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextModelFitModel, Me.mnuOptionsByContextGeneralFitModel}) Me.mnuOptionsByContextModel.Name = "mnuOptionsByContextModel" - Me.mnuOptionsByContextModel.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextModel.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextModel.Text = "Model" ' 'mnuOptionsByContextModelFitModel ' Me.mnuOptionsByContextModelFitModel.Name = "mnuOptionsByContextModelFitModel" - Me.mnuOptionsByContextModelFitModel.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextModelFitModel.Size = New System.Drawing.Size(176, 22) Me.mnuOptionsByContextModelFitModel.Text = "Fit Model..." ' 'mnuOptionsByContextGeneralFitModel ' Me.mnuOptionsByContextGeneralFitModel.Name = "mnuOptionsByContextGeneralFitModel" - Me.mnuOptionsByContextGeneralFitModel.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextGeneralFitModel.Size = New System.Drawing.Size(176, 22) Me.mnuOptionsByContextGeneralFitModel.Text = "General Fit Model..." ' 'mnuOptionsByContextCropModel ' Me.mnuOptionsByContextCropModel.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOptionsByContextCropModelApsimxExamples}) Me.mnuOptionsByContextCropModel.Name = "mnuOptionsByContextCropModel" - Me.mnuOptionsByContextCropModel.Size = New System.Drawing.Size(180, 22) + Me.mnuOptionsByContextCropModel.Size = New System.Drawing.Size(137, 22) Me.mnuOptionsByContextCropModel.Text = "Crop Model" ' + 'mnuOptionsByContextCropModelApsimxExamples + ' + Me.mnuOptionsByContextCropModelApsimxExamples.Name = "mnuOptionsByContextCropModelApsimxExamples" + Me.mnuOptionsByContextCropModelApsimxExamples.Size = New System.Drawing.Size(176, 22) + Me.mnuOptionsByContextCropModelApsimxExamples.Text = "Apsimx Examples..." + ' 'mnuTools ' Me.mnuTools.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuToolsRunRCode, Me.mnuToolsRestartR, Me.mnuToolsCheckForUpdates, Me.mnuToolsClearOutputWindow, Me.ToolStripSeparator5, Me.mnuToolsSaveCurrentOptions, Me.mnuToolsLoadOptions, Me.mnuToolsInstallRPackage, Me.mnuToolsOptions}) @@ -5134,19 +5142,6 @@ Partial Class frmMain Me.mnuLogFile.Size = New System.Drawing.Size(180, 22) Me.mnuLogFile.Text = "Log Window..." Me.mnuLogFile.ToolTipText = "Log Window" - ' - - 'ToolStripSeparator26 - ' - Me.ToolStripSeparator26.Name = "ToolStripSeparator26" - Me.ToolStripSeparator26.Size = New System.Drawing.Size(206, 6) - - 'mnuOptionsByContextCropModelApsimxExamples - ' - Me.mnuOptionsByContextCropModelApsimxExamples.Name = "mnuOptionsByContextCropModelApsimxExamples" - Me.mnuOptionsByContextCropModelApsimxExamples.Size = New System.Drawing.Size(180, 22) - Me.mnuOptionsByContextCropModelApsimxExamples.Text = "Apsimx Examples..." - ' 'frmMain ' @@ -5161,7 +5156,7 @@ Partial Class frmMain Me.IsMdiContainer = True Me.MainMenuStrip = Me.mnuBar Me.Name = "frmMain" - Me.Text = "R-Instat " + My.Application.Info.Version.ToString + Me.Text = "R-Instat " Me.WindowState = System.Windows.Forms.FormWindowState.Maximized Me.stsStrip.ResumeLayout(False) Me.stsStrip.PerformLayout() From 06bb2961dd8569b566f9d4c51e996e079b4a37e0 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Fri, 2 Dec 2022 09:01:52 +0300 Subject: [PATCH 11/88] Changes to 2 and 3 way variables --- instat/dlgThreeVariableFrequencies.vb | 17 ++++++++++++++++- instat/dlgTwoWayFrequencies.vb | 19 +++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/instat/dlgThreeVariableFrequencies.vb b/instat/dlgThreeVariableFrequencies.vb index 9df2af1525d..d36f24ada89 100644 --- a/instat/dlgThreeVariableFrequencies.vb +++ b/instat/dlgThreeVariableFrequencies.vb @@ -47,6 +47,8 @@ Public Class dlgThreeVariableFrequencies Private Sub InitialiseDialog() ucrBase.iHelpTopicID = 415 + ucrBase.clsRsyntax.bExcludeAssignedFunctionOutput = False + ucrChkWeights.Enabled = False ' temporary because of bug in R functions being used ucrSelectorThreeVariableFrequencies.SetParameter(New RParameter("data", 0)) @@ -122,6 +124,8 @@ Public Class dlgThreeVariableFrequencies ucrPnlFrequencyDisplay.AddParameterPresentCondition(rdoTable, "sjtab") ucrPnlFrequencyDisplay.AddParameterPresentCondition(rdoGraph, "sjplot") 'TODO have conditions on multiple functions for both option + 'and also requires multiple output support. So for now diesable + rdoBoth.Enabled = False ucrPnlFrequencyDisplay.AddToLinkedControls(ucrChkCount, {rdoTable, rdoBoth}, bNewLinkedHideIfParameterMissing:=True) ucrPnlFrequencyDisplay.AddToLinkedControls(ucrSaveGraph, {rdoGraph, rdoBoth}, bNewLinkedHideIfParameterMissing:=True) @@ -172,6 +176,11 @@ Public Class dlgThreeVariableFrequencies clsTableBaseOperator.AddParameter("select", clsRFunctionParameter:=clsSelectFunction, iPosition:=2) clsTableBaseOperator.AddParameter("arrange", clsRFunctionParameter:=clsArrangeFunction, iPosition:=3) clsTableBaseOperator.AddParameter("sjtab", clsRFunctionParameter:=clsSjTabFunction, iPosition:=4) + clsTableBaseOperator.SetAssignToOutputObject("last_table", + RObjectTypeLabel.Table, + RObjectFormat.Html, + ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, + "last_table") clsGraphBaseOperator.SetOperation("%>%") clsGraphBaseOperator.AddParameter("group_by", clsRFunctionParameter:=clsGroupByFunction, iPosition:=1) @@ -203,7 +212,13 @@ Public Class dlgThreeVariableFrequencies clsGridArrangeFunction.SetRCommand("grid.arrange") clsGridArrangeFunction.AddParameter("grobs", clsROperatorParameter:=clsGraphBaseOperator) - clsGridArrangeFunction.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorThreeVariableFrequencies.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") + clsGridArrangeFunction.SetAssignToOutputObject("last_graph", + RObjectTypeLabel.Graph, + RObjectFormat.Image, + ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, + "last_graph") + + ucrBase.clsRsyntax.SetBaseROperator(clsTableBaseOperator) clsCurrBaseCode = clsTableBaseOperator bResetSubdialog = True diff --git a/instat/dlgTwoWayFrequencies.vb b/instat/dlgTwoWayFrequencies.vb index f4cfee0920b..393d5460d2b 100644 --- a/instat/dlgTwoWayFrequencies.vb +++ b/instat/dlgTwoWayFrequencies.vb @@ -48,8 +48,9 @@ Public Class dlgTwoWayFrequencies End Sub Private Sub InitialiseDialog() - 'HelpID ucrBase.iHelpTopicID = 415 + ucrBase.clsRsyntax.bExcludeAssignedFunctionOutput = False + ucrReceiverColumnFactor.Selector = ucrSelectorTwoWayFrequencies ucrReceiverRowFactor.Selector = ucrSelectorTwoWayFrequencies ucrReceiverWeights.Selector = ucrSelectorTwoWayFrequencies @@ -131,6 +132,8 @@ Public Class dlgTwoWayFrequencies ucrPnlFreqDisplay.AddFunctionNamesCondition(rdoTable, "sjtab") ucrPnlFreqDisplay.AddFunctionNamesCondition(rdoGraph, "sjplot") 'TODO conditions for both requires checks on multiple functions + 'and also requires multiple output support. So for now diesable + rdoBoth.Enabled = False 'Setting Display of the group boxes in the dialog ucrPnlFreqDisplay.AddToLinkedControls(ucrChkCount, {rdoTable, rdoBoth}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) @@ -170,6 +173,13 @@ Public Class dlgTwoWayFrequencies clsSjTab.AddParameter("title", Chr(34) & "" & Chr(34)) clsSjTab.AddParameter("string.total", Chr(34) & "Total" & Chr(34)) + clsSjTab.SetAssignToOutputObject("last_table", + RObjectTypeLabel.Table, + RObjectFormat.Html, + ucrSelectorTwoWayFrequencies.strCurrentDataFrame, + "last_table") + + 'Defining Plot functions and default functions clsSjPlot.SetPackageName("sjPlot") clsSjPlot.SetRCommand("sjplot") @@ -178,7 +188,12 @@ Public Class dlgTwoWayFrequencies clsSjPlot.AddParameter("show.n", "TRUE") clsSjPlot.AddParameter("title", Chr(34) & "" & Chr(34)) clsSjPlot.AddParameter("facet.grid", "TRUE") - clsSjPlot.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorTwoWayFrequencies.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") + clsSjPlot.SetAssignToOutputObject("last_graph", + RObjectTypeLabel.Graph, + RObjectFormat.Image, + ucrSelectorTwoWayFrequencies.strCurrentDataFrame, + "last_graph") + ucrBase.clsRsyntax.SetBaseRFunction(clsSjTab) bResetSubdialog = True End Sub From 8bae19ae7b22abb44ab486b14a46699f3d78e761 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Fri, 2 Dec 2022 14:53:57 +0300 Subject: [PATCH 12/88] More refactoring --- instat/clsRCodeStructure.vb | 12 +++++-- instat/dlgOneVarFitModel.vb | 27 +++++++++++++--- .../InstatObject/R/stand_alone_functions.R | 12 +++++++ instat/ucrButtons.vb | 32 +++++-------------- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/instat/clsRCodeStructure.vb b/instat/clsRCodeStructure.vb index ae8a393323e..0e695fc91f6 100644 --- a/instat/clsRCodeStructure.vb +++ b/instat/clsRCodeStructure.vb @@ -507,12 +507,20 @@ Public Class RCodeStructure clsGetRObject.AddParameter("data_name", Chr(34) & _strDataFrameNameToAddAssignToObject & Chr(34)) End If + clsGetRObject.AddParameter("object_name", Chr(34) & _strAssignToName & Chr(34)) + clsAddRObject.AddParameter("object_name", Chr(34) & _strAssignToName & Chr(34)) clsAddRObject.AddParameter("object_type_label", Chr(34) & _strAssignToObjectTypeLabel & Chr(34)) clsAddRObject.AddParameter("object_format", Chr(34) & _strAssignToObjectFormat & Chr(34)) - clsAddRObject.AddParameter("object", _strAssignToObject) - clsGetRObject.AddParameter("object_name", Chr(34) & _strAssignToName & Chr(34)) + If _strAssignToObjectTypeLabel = RObjectTypeLabel.Graph Then + Dim clsCheckGraphRFunction As New RFunction + clsCheckGraphRFunction.SetRCommand("check_graph") + clsCheckGraphRFunction.AddParameter("graph_object", _strAssignToObject) + clsAddRObject.AddParameter("object", clsRFunctionParameter:=clsCheckGraphRFunction) + Else + clsAddRObject.AddParameter("object", strParameterValue:=_strAssignToObject) + End If 'construct the scripts strScript = strScript & clsAddRObject.ToScript() & Environment.NewLine diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 99d8be5f124..526fef0170c 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -320,6 +320,11 @@ Public Class dlgOneVarFitModel clsROneVarFitModelFunction.SetRCommand("fitdist") clsROneVarFitModelFunction.AddParameter("method", Chr(34) & "mle" & Chr(34), iPosition:=1) clsROneVarFitModelFunction.AddParameter("data", clsRFunctionParameter:=clsRConvertIntegerFunction, iPosition:=0) + clsROneVarFitModelFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorOneVarFitMod.strCurrentDataFrame, + strObjectName:="last_model") clsNaExcludeFunction.SetPackageName("stats") clsNaExcludeFunction.SetRCommand("na.exclude") @@ -340,9 +345,13 @@ Public Class dlgOneVarFitModel 'Display Options/Functions clsRplotFunction.SetPackageName("graphics") clsRplotFunction.SetRCommand("plot") - clsRplotFunction.AddParameter("x", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=0) clsRplotFunction.iCallType = 3 clsRplotFunction.bExcludeAssignedFunctionOutput = False + clsRplotFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorOneVarFitMod.strCurrentDataFrame, + strObjectName:="last_graph") clsRplotPPCompFunction.SetPackageName("fitdistrplus") clsRplotPPCompFunction.SetRCommand("ppcomp") @@ -376,6 +385,11 @@ Public Class dlgOneVarFitModel clsRLogLikFunction.SetRCommand("llplot") clsRLogLikFunction.iCallType = 3 clsRLogLikFunction.AddParameter("mlefit", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=0) + clsRLogLikFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorOneVarFitMod.strCurrentDataFrame, + strObjectName:="last_graph") 'Test clsBionomialFunction.SetPackageName("mosaic") @@ -482,15 +496,18 @@ Public Class dlgOneVarFitModel clsVarCIFunction.SetRCommand("VarCI") clsVarCIFunction.AddParameter("method", Chr(34) & "classic" & Chr(34), iPosition:=1) - clsROneVarFitModelFunction.SetAssignTo("last_model", strTempDataframe:=ucrSelectorOneVarFitMod.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model") - clsRLogLikFunction.SetAssignTo("last_likelihood", strTempDataframe:=ucrSelectorOneVarFitMod.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_likelihood") - clsRplotFunction.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorOneVarFitMod.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") ucrBase.clsRsyntax.ClearCodes() ucrBase.clsRsyntax.SetBaseRFunction(clsROneVarFitModelFunction) bResetFittingOptions = True bResetFitModDisplay = True End Sub + Private Sub ucrBase_BeforeClickOk(sender As Object, e As EventArgs) Handles ucrBase.BeforeClickOk + clsRplotFunction.AddParameter("x", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=0) + 'todo. left here + + End Sub + Private Sub SetRCodeForControls(bReset As Boolean) ucrReceiverVariable.AddAdditionalCodeParameterPair(clsBionomialFunction, New RParameter("x", 0), iAdditionalPairNo:=1) @@ -571,6 +588,8 @@ Public Class dlgOneVarFitModel End Sub + + Private Sub TestOKEnabled() If ucrSaveModel.IsComplete() AndAlso Not ucrReceiverVariable.IsEmpty AndAlso ucrDistributionChoice.ucrInputDistributions.cboInput.SelectedItem <> "" Then If ucrInputTxtSd.GetText = "" AndAlso rdoTest.Checked AndAlso ucrInputComboTests.GetText = "Z" Then diff --git a/instat/static/InstatObject/R/stand_alone_functions.R b/instat/static/InstatObject/R/stand_alone_functions.R index dc798069c70..da8948e38d0 100644 --- a/instat/static/InstatObject/R/stand_alone_functions.R +++ b/instat/static/InstatObject/R/stand_alone_functions.R @@ -2750,3 +2750,15 @@ view_html_object <- function(html_object){ message("R viewer not detected. File saved in location ", file_name) return(file_name) } + +# +check_graph <- function(graph_object){ + if(is.null(graph_object)){ + #todo. add a try catch. Applies to commands written in the script window + return(recordPlot()) + }else{ + return(graph_object) + } +} + + diff --git a/instat/ucrButtons.vb b/instat/ucrButtons.vb index 90b3fe6e065..1edbbe687c7 100644 --- a/instat/ucrButtons.vb +++ b/instat/ucrButtons.vb @@ -47,30 +47,14 @@ Public Class ucrButtons RaiseEvent ClickReset(sender, e) End Sub - Private Sub cmdOk_Click(sender As Object, e As EventArgs) Handles cmdOk.Click - RunFormScripts(sender, e, True) + '"Ok", "Ok and Close" and "Ok and Keep" Click event + Private Sub Ok_Click(sender As Object, e As EventArgs) Handles cmdOk.Click, toolStripMenuItemOkClose.Click, toolStripMenuItemOkKeep.Click + OnScriptButtonsClick(sender, e, True, Not sender Is toolStripMenuItemOkKeep) End Sub - Private Sub cmdPaste_Click(sender As Object, e As EventArgs) Handles cmdPaste.Click - Scripts(bRun:=False) - ParentForm.Close() - End Sub - - Private Sub toolStripMenuItemOkClose_Click(sender As Object, e As EventArgs) Handles toolStripMenuItemOkClose.Click - RunFormScripts(sender, e, True) - End Sub - - Private Sub toolStripMenuItemOkKeep_Click(sender As Object, e As EventArgs) Handles toolStripMenuItemOkKeep.Click - RunFormScripts(sender, e, False) - End Sub - - Private Sub toolStripMenuItemToScriptClose_Click(sender As Object, e As EventArgs) Handles toolStripMenuItemToScriptClose.Click - Scripts(bRun:=False) - ParentForm.Close() - End Sub - - Private Sub toolStripMenuItemToScriptKeep_Click(sender As Object, e As EventArgs) Handles toolStripMenuItemToScriptKeep.Click - Scripts(bRun:=False) + '"To Script", "To Script and Close" and "To Script and Keep" Click event + Private Sub ToScript_Click(sender As Object, e As EventArgs) Handles cmdPaste.Click, toolStripMenuItemToScriptClose.Click, toolStripMenuItemToScriptKeep.Click + OnScriptButtonsClick(sender, e, False, Not sender Is toolStripMenuItemToScriptKeep) End Sub Private Sub txtComment_TextChanged(sender As Object, e As EventArgs) Handles txtComment.TextChanged @@ -80,7 +64,7 @@ Public Class ucrButtons End If End Sub - Private Sub RunFormScripts(sender As Object, e As EventArgs, bCloseForm As Boolean) + Private Sub OnScriptButtonsClick(sender As Object, e As EventArgs, bExecuteScripts As Boolean, bCloseForm As Boolean) Dim lstCurrentEnabled As New List(Of Boolean) Dim ctrTempControl As Control Dim j As Integer @@ -93,7 +77,7 @@ Public Class ucrButtons ParentForm.Cursor = Cursors.WaitCursor RaiseEvent BeforeClickOk(sender, e) - Scripts(bRun:=True) + Scripts(bRun:=bExecuteScripts) RaiseEvent ClickOk(sender, e) 'Need to be resetting other AssignTo values as well, maybe through single method From 9a96581a4d8bd73ec5f11f18d23e89cd509f680f Mon Sep 17 00:00:00 2001 From: patowhiz Date: Sat, 3 Dec 2022 14:16:23 +0300 Subject: [PATCH 13/88] 5 model dialog changes --- instat/dlgExtremes.vb | 44 ++++--- instat/dlgFitModel.vb | 165 +++++++++++++++++++-------- instat/dlgOneVarFitModel.vb | 22 ++-- instat/dlgThreeVariablesModelling.vb | 129 ++++++++++++++------- instat/dlgTwoVariableFitModel.vb | 125 ++++++++++++++------ 5 files changed, 337 insertions(+), 148 deletions(-) diff --git a/instat/dlgExtremes.vb b/instat/dlgExtremes.vb index 4ab00f7da98..cc0ad564449 100644 --- a/instat/dlgExtremes.vb +++ b/instat/dlgExtremes.vb @@ -121,9 +121,6 @@ clsInitialListFunction, clsOmitMissingFunction As New RFunction clsLocationParamOperator.AddParameter(strParameterValue:="", iPosition:=0, bIncludeArgumentName:=False) clsLocationParamOperator.bSpaceAroundOperation = False - clsPlotsFunction.SetRCommand("plot") - clsPlotsFunction.iCallType = 3 - clsPlotsFunction.bExcludeAssignedFunctionOutput = False clsPriorParamListFunction.SetRCommand("list") clsPriorParamListFunction.AddParameter("v", clsRFunctionParameter:=clsConcatenateFunction, iPosition:=5) @@ -133,37 +130,56 @@ clsInitialListFunction, clsOmitMissingFunction As New RFunction clsInitialListFunction.AddParameter("scale", "0.1", iPosition:=1) clsInitialListFunction.AddParameter("shape", "-0.5", iPosition:=2) + 'todo. What's the use of this RFunction? clsConfidenceIntervalFunction.SetPackageName("extRemes") clsConfidenceIntervalFunction.SetRCommand("ci.fevd") clsFevdFunction.SetPackageName("extRemes") clsFevdFunction.SetRCommand("fevd") - clsFevdFunction.AddParameter("type", Chr(34) & "GEV" & Chr(34), iPosition:=0) clsFevdFunction.AddParameter("method", Chr(34) & "MLE" & Chr(34), iPosition:=1) clsFevdFunction.AddParameter("na.action", "na.omit", iPosition:=3) + clsFevdFunction.bExcludeAssignedFunctionOutput = False + clsFevdFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorExtremes.strCurrentDataFrame, + strObjectName:="last_model") - clsFevdFunction.SetAssignTo(ucrSaveExtremes.GetText(), strTempDataframe:=ucrSelectorExtremes.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) - clsPlotsFunction.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorExtremes.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") - clsPlotsFunction.AddParameter("x", clsRFunctionParameter:=clsFevdFunction, iPosition:=0) + + clsPlotsFunction.SetRCommand("plot") + clsPlotsFunction.bExcludeAssignedFunctionOutput = False clsOmitMissingFunction.SetRCommand("na.omit") clsOmitMissingFunction.SetPackageName("stats") clsOmitMissingFunction.AddParameter("object", clsRFunctionParameter:=ucrSelectorExtremes.ucrAvailableDataFrames.clsCurrDataFrame, iPosition:=0) - clsAttachFunction.SetRCommand("attach") - clsDetachFunction.SetRCommand("detach") - clsAttachFunction.AddParameter("what", clsRFunctionParameter:=clsOmitMissingFunction, iPosition:=0) - clsDetachFunction.AddParameter("name", clsRFunctionParameter:=clsOmitMissingFunction, iPosition:=0) - clsDetachFunction.AddParameter("unload", "TRUE", iPosition:=2) + 'todo. are they needed? + 'clsAttachFunction.SetRCommand("attach") + 'clsAttachFunction.AddParameter("what", clsRFunctionParameter:=clsOmitMissingFunction, iPosition:=0) + + 'clsDetachFunction.SetRCommand("detach") + 'clsDetachFunction.AddParameter("name", clsRFunctionParameter:=clsOmitMissingFunction, iPosition:=0) + 'clsDetachFunction.AddParameter("unload", "TRUE", iPosition:=2) - ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachFunction) - ucrBase.clsRsyntax.AddToAfterCodes(clsDetachFunction, iPosition:=1) + 'ucrBase.clsRsyntax.AddToBeforeCodes(clsAttachFunction) + 'ucrBase.clsRsyntax.AddToAfterCodes(clsDetachFunction, iPosition:=1) ucrBase.clsRsyntax.SetBaseRFunction(clsFevdFunction) ucrTryModelling.SetRSyntax(ucrBase.clsRsyntax) End Sub + + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveExtremes.ControlValueChanged + 'model plot output + clsPlotsFunction.AddParameter("x", strParameterValue:=clsFevdFunction.GetRObjectToAssignTo(), iPosition:=0) + clsPlotsFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorExtremes.strCurrentDataFrame, + strObjectName:="last_graph") + End Sub + Private Sub SetRCodeForControls(bReset As Boolean) ucrInputExtremes.SetRCode(clsFevdFunction, bReset) ucrReceiverVariable.SetRCode(clsFevdFunction, bReset) diff --git a/instat/dlgFitModel.vb b/instat/dlgFitModel.vb index 94192efccd8..70b4aab911c 100644 --- a/instat/dlgFitModel.vb +++ b/instat/dlgFitModel.vb @@ -125,61 +125,93 @@ Public Class dlgFitModel ucrInputModelPreview.SetName("") ucrInputModelPreview.IsReadOnly = True + clsLM = clsRegressionDefaults.clsDefaultLmFunction.Clone + clsLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) + clsLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsLM.bExcludeAssignedFunctionOutput = False + clsLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_model") + + 'todo. where is clsGLM used? clsGLM = clsRegressionDefaults.clsDefaultGlmFunction.Clone() clsGLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=0) clsFamilyFunction = ucrFamily.clsCurrRFunction clsGLM.AddParameter("family", clsRFunctionParameter:=clsFamilyFunction) clsGLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsGLM.bExcludeAssignedFunctionOutput = False + clsGLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_model") - clsLM = clsRegressionDefaults.clsDefaultLmFunction.Clone - clsLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) - clsLM.AddParameter("na.action", "na.exclude", iPosition:=4) - clsLM.SetAssignTo("last_model", strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) clsGLMNB = clsRegressionDefaults.clsDefaultGLmNBFunction.Clone clsGLMNB.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) - clsGLMNB.SetAssignTo("last_model", strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) + clsGLMNB.bExcludeAssignedFunctionOutput = False + clsGLMNB.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_model") + clsGLMPolr = clsRegressionDefaults.clsDefaultGLmPolrFunction.Clone clsGLMPolr.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) - clsGLMPolr.SetAssignTo("last_model", strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) + clsGLMPolr.bExcludeAssignedFunctionOutput = False + clsGLMPolr.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_model") + clsGLMMultinom = clsRegressionDefaults.clsDefaultGLmMultinomFunction.Clone clsGLMMultinom.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) - clsGLMMultinom.SetAssignTo("last_model", strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) + clsGLMMultinom.bExcludeAssignedFunctionOutput = False + clsGLMMultinom.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_model") + 'Residual Plots dctPlotFunctions = New Dictionary(Of String, RFunction)(clsRegressionDefaults.dctModelPlotFunctions) 'Model clsFormulaFunction = clsRegressionDefaults.clsDefaultFormulaFunction.Clone - clsFormulaFunction.iCallType = 2 + clsFormulaFunction.bExcludeAssignedFunctionOutput = False 'Summary clsSummaryFunction = clsRegressionDefaults.clsDefaultSummary.Clone - clsSummaryFunction.iCallType = 2 + clsSummaryFunction.bExcludeAssignedFunctionOutput = False 'ANOVA clsAnovaFunction = clsRegressionDefaults.clsDefaultAnovaFunction.Clone - clsAnovaFunction.iCallType = 2 + clsAnovaFunction.bExcludeAssignedFunctionOutput = False 'ANOVA II clsAnovaIIFunction = clsRegressionDefaults.clsDefaultAnovaIIFunction.Clone - clsAnovaIIFunction.iCallType = 2 + clsAnovaIIFunction.bExcludeAssignedFunctionOutput = False 'FitModel clsVisReg.SetPackageName("visreg") clsVisReg.SetRCommand("visreg") clsVisReg.AddParameter("type", Chr(34) & "conditional" & Chr(34)) clsVisReg.AddParameter("gg", "FALSE") - clsVisReg.iCallType = 3 clsVisReg.bExcludeAssignedFunctionOutput = False 'Confidence Interval clsConfint = clsRegressionDefaults.clsDefaultConfint.Clone - clsConfint.iCallType = 2 + clsConfint.bExcludeAssignedFunctionOutput = False + + 'todo. where is this used 'Anova + Pvalue clsRestpvalFunction = clsRegressionDefaults.clsDefaultRaovPValueFunction.Clone clsRestpvalFunction.iCallType = 2 @@ -210,6 +242,80 @@ Public Class dlgFitModel ucrTryModelling.SetRSyntax(ucrBase.clsRsyntax) End Sub + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrModelName.ControlValueChanged + + '--------------------------------------------------------------------- + 'model summaries outputs + + 'stats output formula for the model + clsFormulaFunction.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFormulaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_summary") + + 'anova output summary for the model + clsAnovaFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsAnovaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_summary") + + clsAnovaIIFunction.AddParameter("mod", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + + 'estimates output for the model + clsSummaryFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsSummaryFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_summary") + + + 'confidence output limits for the model + clsConfint.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsConfint.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_summary") + + '--------------------------------------------------------------------- + 'column outputs + 'note set assign has not been set here because it's done at the sub dialog level + 'through individual save controls linked to this dialog data frame selector + + clsResidualFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFittedValuesFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsRstandardFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsHatvaluesFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + + '--------------------------------------------------------------------- + 'graphical outputs + + 'model plot output + clsVisReg.AddParameter("fit", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsVisReg.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_graph") + + 'residual plots outputs + For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions + kvp.Value.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + kvp.Value.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorByDataFrameAddRemoveForFitModel.strCurrentDataFrame, + strObjectName:="last_graph") + Next + + End Sub + + Private Sub SetRCodeForControls(bReset As Boolean) bRCodeSet = False ucrModelName.AddAdditionalRCode(clsGLMMultinom, bReset) @@ -332,7 +438,6 @@ Public Class dlgFitModel Private Sub cmdDisplayOptions_Click(sender As Object, e As EventArgs) Handles cmdDisplayOptions.Click sdgSimpleRegOptions.SetRCode(clsNewRSyntax:=ucrBase.clsRsyntax, clsNewFormulaFunction:=clsFormulaFunction, clsNewAnovaFunction:=clsAnovaFunction, clsNewRSummaryFunction:=clsSummaryFunction, clsNewConfint:=clsConfint, clsNewVisReg:=clsVisReg, clsNewResidualFunction:=clsResidualFunction, clsNewFittedValuesFunction:=clsFittedValuesFunction, clsNewRstandardFunction:=clsRstandardFunction, clsNewHatvaluesFunction:=clsHatvaluesFunction, dctNewPlot:=dctPlotFunctions, ucrNewAvailableDatafrane:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames, bReset:=bResetOptionsSubDialog) sdgSimpleRegOptions.ShowDialog() - GraphAssignTo() bResetOptionsSubDialog = False End Sub @@ -402,22 +507,6 @@ Public Class dlgFitModel clsLMOrGLM = clsGLM End If - 'Update display functions to contain correct model - clsFormulaFunction.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM) - clsAnovaFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsAnovaIIFunction.AddParameter("mod", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsSummaryFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsConfint.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsVisReg.AddParameter("fit", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - - For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - kvp.Value.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - Next - - clsResidualFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsFittedValuesFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsRstandardFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsHatvaluesFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) ucrBase.clsRsyntax.SetBaseRFunction(clsLMOrGLM) End If End Sub @@ -469,7 +558,6 @@ Public Class dlgFitModel Private Sub ucrSelectorByDataFrameAddRemoveForFitModel_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorByDataFrameAddRemoveForFitModel.ControlValueChanged ChooseRFunction() ChooseAnovaFunction() - GraphAssignTo() End Sub Public Sub ResponseVariableType() @@ -504,21 +592,6 @@ Public Class dlgFitModel autoTranslate(Me) End Sub - Private Sub GraphAssignTo() - 'Dim lstPlotNames As New List(Of String) - 'Dim i As Integer = 0 - - 'lstPlotNames = New List(Of String)({"last_residplot", "last_qqplot", "last_scaleloc", "last_cooksdist", "last_residlev", "last_cookslev"}) - - 'temp fix for graph display problem with RDotNet - clsVisReg.SetAssignTo("last_visreg", strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_visreg") - - 'For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - ' kvp.Value.SetAssignTo(lstPlotNames(index:=i), strTempDataframe:=ucrSelectorByDataFrameAddRemoveForFitModel.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:=lstPlotNames(index:=i)) - ' i = i + 1 - 'Next - End Sub - Private Sub ucrBase_ClickOk(sender As Object, e As EventArgs) Handles ucrBase.ClickOk ucrReceiverExpressionFitModel.AddtoCombobox(ucrReceiverExpressionFitModel.GetText) End Sub diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 526fef0170c..4e06925a9f5 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -358,28 +358,28 @@ Public Class dlgOneVarFitModel clsRplotPPCompFunction.bExcludeAssignedFunctionOutput = False clsRplotPPCompFunction.iCallType = 3 clsRplotPPCompFunction.AddParameter("plotstyle", Chr(34) & "ggplot" & Chr(34), iPosition:=0) - clsRplotPPCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) + 'clsRplotPPCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) clsRplotCdfCompFunction.SetPackageName("fitdistrplus") clsRplotCdfCompFunction.SetRCommand("cdfcomp") clsRplotCdfCompFunction.bExcludeAssignedFunctionOutput = False clsRplotCdfCompFunction.iCallType = 3 clsRplotCdfCompFunction.AddParameter("plotstyle", Chr(34) & "ggplot" & Chr(34), iPosition:=0) - clsRplotCdfCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) + 'clsRplotCdfCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) clsRplotQqCompFunction.SetPackageName("fitdistrplus") clsRplotQqCompFunction.SetRCommand("qqcomp") clsRplotQqCompFunction.bExcludeAssignedFunctionOutput = False clsRplotQqCompFunction.iCallType = 3 clsRplotQqCompFunction.AddParameter("plotstyle", Chr(34) & "ggplot" & Chr(34), iPosition:=0) - clsRplotQqCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) + 'clsRplotQqCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) clsRplotDensCompFunction.SetPackageName("fitdistrplus") clsRplotDensCompFunction.SetRCommand("denscomp") clsRplotDensCompFunction.bExcludeAssignedFunctionOutput = False clsRplotDensCompFunction.iCallType = 3 clsRplotDensCompFunction.AddParameter("plotstyle", Chr(34) & "ggplot" & Chr(34), iPosition:=0) - clsRplotDensCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) + 'clsRplotDensCompFunction.AddParameter("ft", clsRFunctionParameter:=clsROneVarFitModelFunction, iPosition:=1) clsRLogLikFunction.SetPackageName("fitdistrplus") clsRLogLikFunction.SetRCommand("llplot") @@ -483,8 +483,6 @@ Public Class dlgOneVarFitModel clsQuantileCIFunction.AddParameter("minLength", "FALSE", iPosition:=6) clsQuantileCIFunction.AddParameter("bootci.type", Chr(34) & "norm" & Chr(34), iPosition:=5) - - clsSdCIFunction.SetPackageName("MKinfer") clsSdCIFunction.SetRCommand("sdCI") clsSdCIFunction.AddParameter("boot", "FALSE", iPosition:=2) @@ -496,15 +494,21 @@ Public Class dlgOneVarFitModel clsVarCIFunction.SetRCommand("VarCI") clsVarCIFunction.AddParameter("method", Chr(34) & "classic" & Chr(34), iPosition:=1) - ucrBase.clsRsyntax.ClearCodes() ucrBase.clsRsyntax.SetBaseRFunction(clsROneVarFitModelFunction) bResetFittingOptions = True bResetFitModDisplay = True End Sub + Private Sub ucrBase_BeforeClickOk(sender As Object, e As EventArgs) Handles ucrBase.BeforeClickOk + 'todo clsRplotFunction.AddParameter("x", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=0) - 'todo. left here + clsRplotPPCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) + clsRplotCdfCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) + clsRplotQqCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) + clsRplotDensCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) + + End Sub @@ -588,8 +592,6 @@ Public Class dlgOneVarFitModel End Sub - - Private Sub TestOKEnabled() If ucrSaveModel.IsComplete() AndAlso Not ucrReceiverVariable.IsEmpty AndAlso ucrDistributionChoice.ucrInputDistributions.cboInput.SelectedItem <> "" Then If ucrInputTxtSd.GetText = "" AndAlso rdoTest.Checked AndAlso ucrInputComboTests.GetText = "Z" Then diff --git a/instat/dlgThreeVariablesModelling.vb b/instat/dlgThreeVariablesModelling.vb index 8f0c8e9c686..9594ed22d51 100644 --- a/instat/dlgThreeVariablesModelling.vb +++ b/instat/dlgThreeVariablesModelling.vb @@ -148,11 +148,23 @@ Public Class dlgThreeVariableModelling clsLM = clsRegressionDefaults.clsDefaultLmFunction.Clone() clsLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=0) clsLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsLM.bExcludeAssignedFunctionOutput = False + clsLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_model") clsGLM = clsRegressionDefaults.clsDefaultGlmFunction.Clone() clsGLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=0) clsGLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsGLM.bExcludeAssignedFunctionOutput = False + clsGLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_model") clsFamilyFunction = ucrDistributionChoice.clsCurrRFunction @@ -169,22 +181,21 @@ Public Class dlgThreeVariableModelling 'Residual Plots dctPlotFunctions = New Dictionary(Of String, RFunction)(clsRegressionDefaults.dctModelPlotFunctions) - 'Model clsFormulaFunction = clsRegressionDefaults.clsDefaultFormulaFunction.Clone - clsFormulaFunction.iCallType = 2 + clsFormulaFunction.bExcludeAssignedFunctionOutput = False 'Summary clsSummaryFunction = clsRegressionDefaults.clsDefaultSummary.Clone - clsSummaryFunction.iCallType = 2 + clsSummaryFunction.bExcludeAssignedFunctionOutput = False 'ANOVA clsAnovaFunction = clsRegressionDefaults.clsDefaultAnovaFunction.Clone - clsAnovaFunction.iCallType = 2 + clsAnovaFunction.bExcludeAssignedFunctionOutput = False 'Confidence Interval clsConfint = clsRegressionDefaults.clsDefaultConfint.Clone - clsConfint.iCallType = 2 + clsConfint.bExcludeAssignedFunctionOutput = False 'FitModel clsVisReg.SetPackageName("visreg") @@ -192,7 +203,6 @@ Public Class dlgThreeVariableModelling clsVisReg.AddParameter("type", Chr(34) & "conditional" & Chr(34)) 'changed gg parameter to FALSE since when TRUE no plot is given (not compatible with ggplot2 package) clsVisReg.AddParameter("gg", "FALSE") - clsVisReg.iCallType = 3 clsVisReg.bExcludeAssignedFunctionOutput = False clsResidualFunction.SetRCommand("residuals") @@ -200,14 +210,10 @@ Public Class dlgThreeVariableModelling clsRstandardFunction.SetRCommand("rstandard") clsHatvaluesFunction.SetRCommand("hatvalues") - clsLM.SetAssignTo(ucrSaveModel.GetText, strTempDataframe:=ucrSelectorThreeVariableModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:=ucrSaveModel.GetText, bAssignToIsPrefix:=True) - clsGLM.SetAssignTo(ucrSaveModel.GetText, strTempDataframe:=ucrSelectorThreeVariableModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:=ucrSaveModel.GetText, bAssignToIsPrefix:=True) + clsLMOrGLM = clsLM ucrBase.clsRsyntax.SetBaseRFunction(clsLM) - ucrBase.clsRsyntax.AddToAfterCodes(clsAnovaFunction, 1) ucrBase.clsRsyntax.AddToAfterCodes(clsSummaryFunction, 2) - clsLMOrGLM = clsLM - bResetModelOptions = True bResetDisplayOptions = True @@ -215,6 +221,77 @@ Public Class dlgThreeVariableModelling bResetSecondFunction = True End Sub + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveModel.ControlValueChanged + + '--------------------------------------------------------------------- + 'model summaries outputs + + 'stats output formula for the model + clsFormulaFunction.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFormulaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + 'anova output summary for the model + clsAnovaFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsAnovaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + 'estimates output for the model + clsSummaryFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsSummaryFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + + 'confidence output limits for the model + clsConfint.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsConfint.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + '--------------------------------------------------------------------- + 'column outputs + 'note set assign has not been set here because it's done at the sub dialog level + 'through individual save controls linked to this dialog data frame selector + + clsResidualFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFittedValuesFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsRstandardFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsHatvaluesFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + + '--------------------------------------------------------------------- + 'graphical outputs + + 'model plot output + clsVisReg.AddParameter("fit", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsVisReg.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_graph") + + 'residual plots outputs + For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions + kvp.Value.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + kvp.Value.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableModelling.strCurrentDataFrame, + strObjectName:="last_graph") + Next + + End Sub + Private Sub SetRCodeForControls(bReset As Object) bRCodeSet = False @@ -307,7 +384,6 @@ Public Class dlgThreeVariableModelling Private Sub cmdDisplayOptions_Click(sender As Object, e As EventArgs) Handles cmdDisplayOptions.Click sdgSimpleRegOptions.SetRCode(clsNewRSyntax:=ucrBase.clsRsyntax, clsNewFormulaFunction:=clsFormulaFunction, clsNewAnovaFunction:=clsAnovaFunction, clsNewRSummaryFunction:=clsSummaryFunction, clsNewConfint:=clsConfint, clsNewVisReg:=clsVisReg, dctNewPlot:=dctPlotFunctions, clsNewResidualFunction:=clsResidualFunction, clsNewFittedValuesFunction:=clsFittedValuesFunction, clsNewRstandardFunction:=clsRstandardFunction, clsNewHatvaluesFunction:=clsHatvaluesFunction, ucrNewAvailableDatafrane:=ucrSelectorThreeVariableModelling.ucrAvailableDataFrames, bReset:=bResetDisplayOptions) sdgSimpleRegOptions.ShowDialog() - GraphAssignTo() bResetDisplayOptions = False End Sub @@ -323,22 +399,6 @@ Public Class dlgThreeVariableModelling Else clsLMOrGLM = clsGLM End If - - 'Update display functions to contain correct model - clsFormulaFunction.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM) - clsAnovaFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsSummaryFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsConfint.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsVisReg.AddParameter("fit", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - - For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - kvp.Value.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - Next - - clsResidualFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsFittedValuesFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsRstandardFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsHatvaluesFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) ucrBase.clsRsyntax.SetBaseRFunction(clsLMOrGLM) End If End Sub @@ -431,20 +491,7 @@ Public Class dlgThreeVariableModelling Private Sub ucrSelectorThreeVariableModelling_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorThreeVariableModelling.ControlValueChanged SetBaseFunction() - GraphAssignTo() End Sub - Private Sub GraphAssignTo() - 'temp fix for graph display problem with RDotNet - clsVisReg.SetAssignTo("last_visreg", strTempDataframe:=ucrSelectorThreeVariableModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_visreg") - 'Dim lstPlotNames As New List(Of String) - 'Dim i As Integer = 0 - 'lstPlotNames = New List(Of String)({"last_residplot", "last_qqplot", "last_scaleloc", "last_cooksdist", "last_residlev", "last_cookslev"}) - - 'For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - ' kvp.Value.SetAssignTo(lstPlotNames(index:=i), strTempDataframe:=ucrSelectorThreeVariableModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:=lstPlotNames(index:=i)) - ' i = i + 1 - 'Next - End Sub End Class \ No newline at end of file diff --git a/instat/dlgTwoVariableFitModel.vb b/instat/dlgTwoVariableFitModel.vb index 37d26b0467b..17e0f42e605 100644 --- a/instat/dlgTwoVariableFitModel.vb +++ b/instat/dlgTwoVariableFitModel.vb @@ -53,7 +53,7 @@ Public Class dlgTwoVariableFitModel Private clsRstandardFunction, clsHatvaluesFunction, clsResidualFunction, clsFittedValuesFunction As New RFunction 'Display options codes - Public clsFormulaFunction, clsAnovaFunction, clsSummaryFunction, clsConfint As RFunction + Public clsFormulaFunction, clsAnovaFunction, clsSummaryFunction, clsConfint As New RFunction Private bRCodeSet As Boolean Private bReset As Boolean = True @@ -239,10 +239,20 @@ Public Class dlgTwoVariableFitModel clsLM = clsRegressionDefaults.clsDefaultLmFunction.Clone clsLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) clsLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_model") clsGLM = clsRegressionDefaults.clsDefaultGlmFunction.Clone clsGLM.AddParameter("formula", clsROperatorParameter:=clsFormulaOperator, iPosition:=1) clsGLM.AddParameter("na.action", "na.exclude", iPosition:=4) + clsGLM.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_model") clsPolynomialFunc.SetRCommand("poly") @@ -254,40 +264,33 @@ Public Class dlgTwoVariableFitModel clsVisReg.SetRCommand("visreg") clsVisReg.AddParameter("type", Chr(34) & "conditional" & Chr(34)) clsVisReg.AddParameter("gg", "TRUE") - clsVisReg.iCallType = 3 clsVisReg.bExcludeAssignedFunctionOutput = False - 'Model clsFormulaFunction = clsRegressionDefaults.clsDefaultFormulaFunction.Clone - clsFormulaFunction.iCallType = 2 'Summary clsSummaryFunction = clsRegressionDefaults.clsDefaultSummary.Clone - clsSummaryFunction.iCallType = 2 + clsSummaryFunction.bExcludeAssignedFunctionOutput = False 'ANOVA clsAnovaFunction = clsRegressionDefaults.clsDefaultAnovaFunction.Clone - clsAnovaFunction.iCallType = 2 + clsAnovaFunction.bExcludeAssignedFunctionOutput = False 'Confidence Interval clsConfint = clsRegressionDefaults.clsDefaultConfint.Clone - clsConfint.iCallType = 2 + clsConfint.bExcludeAssignedFunctionOutput = False clsAsNumeric.SetRCommand("as.numeric") clsFamilyFunction = ucrDistributionChoice.clsCurrRFunction clsGLM.AddParameter("family", clsRFunctionParameter:=clsFamilyFunction) - clsLM.SetAssignTo(strTemp:=ucrSaveModels.GetText, strTempDataframe:=ucrSelectorSimpleReg.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) - clsGLM.SetAssignTo(strTemp:=ucrSaveModels.GetText, strTempDataframe:=ucrSelectorSimpleReg.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempModel:="last_model", bAssignToIsPrefix:=True) + clsLMOrGLM = clsLM clsResidualFunction.SetRCommand("residuals") - clsFittedValuesFunction.SetRCommand("fitted.values") - clsRstandardFunction.SetRCommand("rstandard") - clsHatvaluesFunction.SetRCommand("hatvalues") 'Broken stick @@ -411,6 +414,77 @@ Public Class dlgTwoVariableFitModel bResetFirstFunction = True End Sub + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveModels.ControlValueChanged + + '--------------------------------------------------------------------- + 'model summaries outputs + + 'stats output formula for the model + clsFormulaFunction.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFormulaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_summary") + + 'anova output summary for the model + clsAnovaFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsAnovaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_summary") + + 'estimates output for the model + clsSummaryFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsSummaryFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_summary") + + + 'confidence output limits for the model + clsConfint.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsConfint.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_summary") + + '--------------------------------------------------------------------- + 'column outputs + 'note set assign has not been set here because it's done at the sub dialog level + 'through individual save controls linked to this dialog data frame selector + + clsResidualFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsFittedValuesFunction.AddParameter("object", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsRstandardFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsHatvaluesFunction.AddParameter("model", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + + '--------------------------------------------------------------------- + 'graphical outputs + + 'model plot output + clsVisReg.AddParameter("fit", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + clsVisReg.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_graph") + + 'residual plots outputs + For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions + kvp.Value.AddParameter("x", strParameterValue:=clsLMOrGLM.GetRObjectToAssignTo(), iPosition:=0) + kvp.Value.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorSimpleReg.strCurrentDataFrame, + strObjectName:="last_graph") + Next + + End Sub + Private Sub SetRCodeForControls(bReset) bRCodeSet = False ucrReceiverExplanatory.AddAdditionalCodeParameterPair(clsBrokenStickGeneralOperator, New RParameter("x", iNewPosition:=0, bNewIncludeArgumentName:=False), iAdditionalPairNo:=1) @@ -545,7 +619,6 @@ Public Class dlgTwoVariableFitModel Private Sub cmdDisplayOptions_Click(sender As Object, e As EventArgs) Handles cmdDisplayOptions.Click sdgSimpleRegOptions.SetRCode(clsNewRSyntax:=ucrBase.clsRsyntax, clsNewFormulaFunction:=clsFormulaFunction, clsNewAnovaFunction:=clsAnovaFunction, clsNewRSummaryFunction:=clsSummaryFunction, clsNewConfint:=clsConfint, clsNewVisReg:=clsVisReg, dctNewPlot:=dctPlotFunctions, clsNewResidualFunction:=clsResidualFunction, clsNewFittedValuesFunction:=clsFittedValuesFunction, clsNewRstandardFunction:=clsRstandardFunction, clsNewHatvaluesFunction:=clsHatvaluesFunction, ucrNewAvailableDatafrane:=ucrSelectorSimpleReg.ucrAvailableDataFrames, bReset:=bResetOptionsSubDialog) sdgSimpleRegOptions.ShowDialog() - GraphAssignTo() bResetOptionsSubDialog = False End Sub @@ -569,6 +642,8 @@ Public Class dlgTwoVariableFitModel End If End Sub + + Private Sub SetBaseFunction() If rdoGeneralCase.Checked Then If (ucrDistributionChoice.clsCurrDistribution.strNameTag = "Normal") Then @@ -579,21 +654,6 @@ Public Class dlgTwoVariableFitModel ucrBase.clsRsyntax.AddToAfterCodes(clsAnovaFunction, 1) ucrBase.clsRsyntax.AddToAfterCodes(clsSummaryFunction, 2) ucrBase.clsRsyntax.SetBaseRFunction(clsLMOrGLM) - 'Update display functions to contain correct model - clsFormulaFunction.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM) - clsAnovaFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM) - clsSummaryFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM) - clsConfint.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM) - clsVisReg.AddParameter("fit", clsRFunctionParameter:=clsLMOrGLM) - - For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - kvp.Value.AddParameter("x", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - Next - - clsResidualFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsFittedValuesFunction.AddParameter("object", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsRstandardFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) - clsHatvaluesFunction.AddParameter("model", clsRFunctionParameter:=clsLMOrGLM, iPosition:=0) ElseIf rdoTest.Checked Then ucrBase.clsRsyntax.RemoveFromAfterCodes(clsAnovaFunction) ucrBase.clsRsyntax.RemoveFromAfterCodes(clsSummaryFunction) @@ -711,15 +771,6 @@ Public Class dlgTwoVariableFitModel ReceiverColumnType() End Sub - Private Sub ucrSelectorSimpleReg_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorSimpleReg.ControlValueChanged - GraphAssignTo() - End Sub - - 'temp fix for graph display problem with RDotNet - 'correct solution is to have save controls linked to each graph - Private Sub GraphAssignTo() - clsVisReg.SetAssignTo("last_visreg", strTempDataframe:=ucrSelectorSimpleReg.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_visreg") - End Sub Private Sub ucrReceiverExplanatory_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverExplanatory.ControlValueChanged If bRCodeSet Then From 129f2d04f8e15c092d763692681e05753631d140 Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Sun, 4 Dec 2022 10:45:45 +0100 Subject: [PATCH 14/88] Update instat/dlgOneVarFitModel.vb --- instat/dlgOneVarFitModel.vb | 3 --- 1 file changed, 3 deletions(-) diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 4e06925a9f5..992db1cae42 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -507,9 +507,6 @@ Public Class dlgOneVarFitModel clsRplotCdfCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) clsRplotQqCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) clsRplotDensCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) - - - End Sub From d0c4428a8bbf9cae5d5d79a6e4ebb2d43522340e Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Sun, 4 Dec 2022 10:45:55 +0100 Subject: [PATCH 15/88] Update instat/dlgOneVarFitModel.vb --- instat/dlgOneVarFitModel.vb | 2 -- 1 file changed, 2 deletions(-) diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 992db1cae42..63bd47e9c6a 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -508,8 +508,6 @@ Public Class dlgOneVarFitModel clsRplotQqCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) clsRplotDensCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) End Sub - - Private Sub SetRCodeForControls(bReset As Boolean) ucrReceiverVariable.AddAdditionalCodeParameterPair(clsBionomialFunction, New RParameter("x", 0), iAdditionalPairNo:=1) ucrReceiverVariable.AddAdditionalCodeParameterPair(clsProportionFunction, New RParameter("x", 0), iAdditionalPairNo:=2) From b2d9c9ec4a1bfe50a34d4c68422bd7a030e6cb20 Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Sun, 4 Dec 2022 10:46:04 +0100 Subject: [PATCH 16/88] Update instat/dlgTwoVariableFitModel.vb --- instat/dlgTwoVariableFitModel.vb | 2 -- 1 file changed, 2 deletions(-) diff --git a/instat/dlgTwoVariableFitModel.vb b/instat/dlgTwoVariableFitModel.vb index 17e0f42e605..029f31c2e1d 100644 --- a/instat/dlgTwoVariableFitModel.vb +++ b/instat/dlgTwoVariableFitModel.vb @@ -642,8 +642,6 @@ Public Class dlgTwoVariableFitModel End If End Sub - - Private Sub SetBaseFunction() If rdoGeneralCase.Checked Then If (ucrDistributionChoice.clsCurrDistribution.strNameTag = "Normal") Then From 590c01e5dab832c13cd484e18dda763fc1f4d054 Mon Sep 17 00:00:00 2001 From: lloyddewit Date: Sun, 4 Dec 2022 10:58:00 +0100 Subject: [PATCH 17/88] small formatting corrections --- instat/clsRLink.vb | 16 +++++++--------- instat/dlgOneVarFitModel.vb | 1 + 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index d6e6dbb9e02..91f57b8ee5f 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -1027,16 +1027,14 @@ Public Class RLink clsLastGraph.SetRCommand(strInstatDataObject & "$get_last_graph") clsLastGraph.AddParameter("print_graph", "FALSE", iPosition:=0) - Dim strGlobalGraphDisplayOption As String - 'store the current set graph display option, to restore after display - strGlobalGraphDisplayOption = Me.strGraphDisplayOption - Me.strGraphDisplayOption = "view_R_viewer" - clsLastGraph.AddParameter("print_graph", "TRUE", iPosition:=0) - RunScript(clsLastGraph.ToScript(), iCallType:=3, bAddOutputInViewer:=False, strComment:="View last graph", bSeparateThread:=False) - 'restore the graph display option - Me.strGraphDisplayOption = strGlobalGraphDisplayOption - + 'store the current set graph display option, to restore after display + strGlobalGraphDisplayOption = Me.strGraphDisplayOption + Me.strGraphDisplayOption = "view_R_viewer" + clsLastGraph.AddParameter("print_graph", "TRUE", iPosition:=0) + RunScript(clsLastGraph.ToScript(), iCallType:=3, bAddOutputInViewer:=False, strComment:="View last graph", bSeparateThread:=False) + 'restore the graph display option + Me.strGraphDisplayOption = strGlobalGraphDisplayOption End Sub '''-------------------------------------------------------------------------------------------- diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 63bd47e9c6a..68be5519704 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -508,6 +508,7 @@ Public Class dlgOneVarFitModel clsRplotQqCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) clsRplotDensCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) End Sub + Private Sub SetRCodeForControls(bReset As Boolean) ucrReceiverVariable.AddAdditionalCodeParameterPair(clsBionomialFunction, New RParameter("x", 0), iAdditionalPairNo:=1) ucrReceiverVariable.AddAdditionalCodeParameterPair(clsProportionFunction, New RParameter("x", 0), iAdditionalPairNo:=2) From 0dc5315bfe20651c6bc6fb88b68cb8d7c0b042bd Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Sun, 4 Dec 2022 21:01:07 +0000 Subject: [PATCH 18/88] removed 32 bit from build issues with 32 bit directory therefore removed from build --- .github/workflows/CreateInstaller.yml | 70 +++++++++++++-------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index e3161d66698..16f14dc7b46 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -83,18 +83,18 @@ jobs: Configuration: ${{ matrix.configuration }} # Build 32 bit installer without R - - name: Building the installer 32bit - No R - run: | - "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" - shell: cmd + #- name: Building the installer 32bit - No R + # run: | + # "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" + # shell: cmd # upload 32 bit installer without R - - name: Upload the 32 bit installer as an artifact - uses: actions/upload-artifact@v2 - if: ${{ github.event_name != 'pull_request' }} - with: - path: "Output/R-Instat_0.7.4_Installer_32.exe" - name: rinstat32NoR-innosetup + #- name: Upload the 32 bit installer as an artifact + # uses: actions/upload-artifact@v2 + # if: ${{ github.event_name != 'pull_request' }} + # with: + # path: "Output/R-Instat_0.7.4_Installer_32.exe" + # name: rinstat32NoR-innosetup # Build 64 bit installer without R - name: Building the installer 64bit - No R @@ -129,14 +129,14 @@ jobs: continue-on-error: true # Create directory and copy over InstatData (32bit) - - name: Make Library directory 32 bit - run: | - MKDIR instat\bin\x64\Release\static\Library\ + #- name: Make Library directory 32 bit + # run: | + # MKDIR instat\bin\x64\Release\static\Library\ - - name: Copy R-Instat Data 32 bit - run: | - ROBOCOPY InstatData\data\*.* instat\bin\x64\Release\static\Library\ /E - continue-on-error: true + #- name: Copy R-Instat Data 32 bit + # run: | + # ROBOCOPY InstatData\data\*.* instat\bin\x64\Release\static\Library\ /E + # continue-on-error: true # check out R for R-Instat - name: Checkout R for R-Instat @@ -151,30 +151,30 @@ jobs: ROBOCOPY R-RInstat\64Bit\ instat\bin\Release\static\ /E continue-on-error: true - - name: Copy R 32 bit - run: | - ROBOCOPY R-RInstat\32Bit\ instat\bin\x64\Release\static\ /E - continue-on-error: true + #- name: Copy R 32 bit + # run: | + # ROBOCOPY R-RInstat\32Bit\ instat\bin\x64\Release\static\ /E + # continue-on-error: true - name: Install R packages (64 bit) run: | "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" shell: cmd - - name: Install R packages (32 bit) - run: | - "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - shell: cmd + #- name: Install R packages (32 bit) + # run: | + # "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + # shell: cmd - name: Building the installer 64bit - With R run: | "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_64bit.iss" shell: cmd - - name: Building the installer 32bit - With R - run: | - "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" - shell: cmd + #- name: Building the installer 32bit - With R + # run: | + # "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" + # shell: cmd - name: Upload the 64 bit installer with R as an artifact uses: actions/upload-artifact@v2 @@ -183,11 +183,11 @@ jobs: path: "Output/R-Instat_Installer_64.exe" name: rinstat64WithR-innosetup - - name: Upload the 32 bit installer with R as an artifact - uses: actions/upload-artifact@v2 - if: ${{ github.event_name != 'pull_request' }} - with: - path: "Output/R-Instat_Installer_32.exe" - name: rinstat64WithR-innosetup + #- name: Upload the 32 bit installer with R as an artifact + # uses: actions/upload-artifact@v2 + # if: ${{ github.event_name != 'pull_request' }} + # with: + # path: "Output/R-Instat_Installer_32.exe" + # name: rinstat64WithR-innosetup From 7031248c8a92fa1a6bd15b868d4e35cf85965772 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Mon, 5 Dec 2022 06:44:05 +0100 Subject: [PATCH 19/88] Design Changes --- instat/frmMain.Designer.vb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instat/frmMain.Designer.vb b/instat/frmMain.Designer.vb index e889d1d47f8..ac357de466c 100644 --- a/instat/frmMain.Designer.vb +++ b/instat/frmMain.Designer.vb @@ -709,7 +709,7 @@ Partial Class frmMain ' 'mnuDescribe ' - Me.mnuDescribe.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeOneVariable, Me.mnuDescribeTwoThreeVariables, Me.mnuDescribeSpecificTables, Me.mnuDescribeSpecificTablesGraphs, Me.mnuDescribeGeneral, Me.ToolStripSeparator9, Me.mnuDescribeMultivariate, Me.ToolStripSeparator13, Me.mnuDescribeUseGraph, Me.mnuDescribeCombineGraph, Me.mnuDescribeThemes, Me.mnuDescribeViewGraph}) + Me.mnuDescribe.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeOneVariable, Me.mnuDescribeTwoThreeVariables, Me.mnuDescribeSpecificTablesGraphs, Me.mnuDescribeSpecificTables, Me.mnuDescribeGeneral, Me.ToolStripSeparator9, Me.mnuDescribeMultivariate, Me.ToolStripSeparator13, Me.mnuDescribeUseGraph, Me.mnuDescribeCombineGraph, Me.mnuDescribeThemes, Me.mnuDescribeViewGraph}) Me.mnuDescribe.Name = "mnuDescribe" Me.mnuDescribe.Size = New System.Drawing.Size(64, 22) Me.mnuDescribe.Tag = "Describe" @@ -834,15 +834,15 @@ Partial Class frmMain 'mnuDescribeSpecificSummary ' Me.mnuDescribeSpecificSummary.Name = "mnuDescribeSpecificSummary" - Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(180, 22) + Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(197, 22) Me.mnuDescribeSpecificSummary.Tag = "Summary..." - Me.mnuDescribeSpecificSummary.Text = "Frequency..." + Me.mnuDescribeSpecificSummary.Text = "Frequency/Summary ..." ' 'mnuDescribeSpecificMultipleResponse ' Me.mnuDescribeSpecificMultipleResponse.Enabled = False Me.mnuDescribeSpecificMultipleResponse.Name = "mnuDescribeSpecificMultipleResponse" - Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(180, 22) + Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(197, 22) Me.mnuDescribeSpecificMultipleResponse.Tag = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Text = "Multiple Response..." Me.mnuDescribeSpecificMultipleResponse.Visible = False From c862707dd08c6eab3f6f89daa1a9f7ab4a7cb100 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 10:04:50 +0300 Subject: [PATCH 20/88] Disabled maximum output heights temporarily --- instat/clsInstatOptionsDefaults.vb | 2 +- instat/dlgOptions.vb | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/instat/clsInstatOptionsDefaults.vb b/instat/clsInstatOptionsDefaults.vb index cf6f04d66a1..d04750751e7 100644 --- a/instat/clsInstatOptionsDefaults.vb +++ b/instat/clsInstatOptionsDefaults.vb @@ -53,5 +53,5 @@ Public Class clsInstatOptionsDefaults Public Shared ReadOnly DEFAULTstrClimsoftHost As String = "127.0.0.1" Public Shared ReadOnly DEFAULTstrClimsoftPort As String = "3308" Public Shared ReadOnly DEFAULTstrClimsoftUsername As String = "root" - Public Shared ReadOnly DEFAULTiMaxOutputsHeight As Integer = 300 + Public Shared ReadOnly DEFAULTiMaxOutputsHeight As Integer = -1 'todo. temporarily disabled End Class diff --git a/instat/dlgOptions.vb b/instat/dlgOptions.vb index ff4bc1c9b40..ae528cd4276 100644 --- a/instat/dlgOptions.vb +++ b/instat/dlgOptions.vb @@ -88,8 +88,13 @@ Public Class dlgOptions ucrInputLanguage.SetDropDownStyleAsNonEditable() ucrChkShowWaitDialog.SetText("Set maximum height for outputs") + + ucrChkMaximumOutputsHeight.SetText("Set maximum height for outputs") ucrChkMaximumOutputsHeight.AddToLinkedControls(ucrNudMaximumOutputsHeight, {True}) ucrNudMaximumOutputsHeight.Maximum = 1000 + 'todo. temporarily disable + ucrChkMaximumOutputsHeight.Visible = False + ucrNudMaximumOutputsHeight.Visible = False SetVisibleLanButton() End Sub @@ -122,10 +127,12 @@ Public Class dlgOptions ucrInputHost.SetName(frmMain.clsInstatOptions.strClimsoftHost) ucrInputPort.SetName(frmMain.clsInstatOptions.strClimsoftPort) ucrInputUserName.SetName(frmMain.clsInstatOptions.strClimsoftUsername) - ucrChkMaximumOutputsHeight.Checked = frmMain.clsInstatOptions.iMaxOutputsHeight > 0 - ucrNudMaximumOutputsHeight.Value = If(frmMain.clsInstatOptions.iMaxOutputsHeight > 0, - frmMain.clsInstatOptions.iMaxOutputsHeight, - clsInstatOptionsDefaults.DEFAULTiMaxOutputsHeight) + + 'todo. temporarily disabled + 'ucrChkMaximumOutputsHeight.Checked = frmMain.clsInstatOptions.iMaxOutputsHeight > 0 + 'ucrNudMaximumOutputsHeight.Value = If(frmMain.clsInstatOptions.iMaxOutputsHeight > 0, + ' frmMain.clsInstatOptions.iMaxOutputsHeight, + ' clsInstatOptionsDefaults.DEFAULTiMaxOutputsHeight) Select Case frmMain.clsInstatOptions.strLanguageCultureCode Case "en-GB" From 3baf861c725e3fa8da0fc3093890949cdcf11b03 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 10:06:01 +0300 Subject: [PATCH 21/88] comment added --- instat/dlgOptions.vb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/instat/dlgOptions.vb b/instat/dlgOptions.vb index ae528cd4276..249d4f116e4 100644 --- a/instat/dlgOptions.vb +++ b/instat/dlgOptions.vb @@ -190,8 +190,9 @@ Public Class dlgOptions frmMain.clsInstatOptions.SetClimsoftHost(ucrInputHost.GetText()) frmMain.clsInstatOptions.SetClimsoftPort(ucrInputPort.GetText()) frmMain.clsInstatOptions.SetClimsoftUsername(ucrInputUserName.GetText()) - frmMain.clsInstatOptions.SetMaximumOutputsHeight(If(ucrChkMaximumOutputsHeight.Checked, - ucrNudMaximumOutputsHeight.Value, -1)) + 'todo. temporarily disabled + 'frmMain.clsInstatOptions.SetMaximumOutputsHeight(If(ucrChkMaximumOutputsHeight.Checked, + ' ucrNudMaximumOutputsHeight.Value, -1)) End Sub Private Sub SetView() From b8611c8889f6959f1585a543790e83d92777c3aa Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 10:09:18 +0300 Subject: [PATCH 22/88] added comment --- instat/dlgOptions.vb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/instat/dlgOptions.vb b/instat/dlgOptions.vb index 249d4f116e4..f8790781db4 100644 --- a/instat/dlgOptions.vb +++ b/instat/dlgOptions.vb @@ -86,13 +86,12 @@ Public Class dlgOptions ucrInputLanguage.SetLinkedDisplayControl(lblLanguage) ucrInputLanguage.SetItems({"English", "French", "Kiswahili", "Portuguese", "Russian", "Spanish"}) ucrInputLanguage.SetDropDownStyleAsNonEditable() - - ucrChkShowWaitDialog.SetText("Set maximum height for outputs") + ucrChkShowWaitDialog.SetText("Show waiting dialog when command takes longer than") ucrChkMaximumOutputsHeight.SetText("Set maximum height for outputs") ucrChkMaximumOutputsHeight.AddToLinkedControls(ucrNudMaximumOutputsHeight, {True}) ucrNudMaximumOutputsHeight.Maximum = 1000 - 'todo. temporarily disable + 'todo. temporarily disabled ucrChkMaximumOutputsHeight.Visible = False ucrNudMaximumOutputsHeight.Visible = False From 4a8c149dfd599dfcbc567ec5d2794af7eeac252e Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Mon, 5 Dec 2022 08:42:36 +0100 Subject: [PATCH 23/88] Code changes --- instat/frmMain.Designer.vb | 37 ++++++++----------------------------- instat/frmMain.vb | 2 +- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/instat/frmMain.Designer.vb b/instat/frmMain.Designer.vb index ac357de466c..98627883a89 100644 --- a/instat/frmMain.Designer.vb +++ b/instat/frmMain.Designer.vb @@ -57,9 +57,6 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariablesCorrelations = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoThreeVariablesTwoWayFrequencies = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies = New System.Windows.Forms.ToolStripMenuItem() - Me.mnuDescribeSpecificTables = New System.Windows.Forms.ToolStripMenuItem() - Me.mnuDescribeSpecificSummary = New System.Windows.Forms.ToolStripMenuItem() - Me.mnuDescribeSpecificMultipleResponse = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificTablesGraphs = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificBarPieChart = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificBoxplotJitterViolinPlot = New System.Windows.Forms.ToolStripMenuItem() @@ -73,6 +70,7 @@ Partial Class frmMain Me.mnuDescribeSpecificMosaic = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificCummulativeDistribution = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeSpecificParallelCoordinatePlot = New System.Windows.Forms.ToolStripMenuItem() + Me.mnuDescribeSpecificTables = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeGeneral = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeGeneralColumnSummaries = New System.Windows.Forms.ToolStripMenuItem() Me.mnuDescribeGeneralTabulation = New System.Windows.Forms.ToolStripMenuItem() @@ -823,30 +821,6 @@ Partial Class frmMain Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies.Size = New System.Drawing.Size(206, 22) Me.mnuDescribeTwoThreeVariablesThreeWayFrequencies.Text = "Three-Way Frequencies..." ' - 'mnuDescribeSpecificTables - ' - Me.mnuDescribeSpecificTables.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificSummary, Me.mnuDescribeSpecificMultipleResponse}) - Me.mnuDescribeSpecificTables.Name = "mnuDescribeSpecificTables" - Me.mnuDescribeSpecificTables.Size = New System.Drawing.Size(180, 22) - Me.mnuDescribeSpecificTables.Tag = "Table_Dialogs" - Me.mnuDescribeSpecificTables.Text = "Tables" - ' - 'mnuDescribeSpecificSummary - ' - Me.mnuDescribeSpecificSummary.Name = "mnuDescribeSpecificSummary" - Me.mnuDescribeSpecificSummary.Size = New System.Drawing.Size(197, 22) - Me.mnuDescribeSpecificSummary.Tag = "Summary..." - Me.mnuDescribeSpecificSummary.Text = "Frequency/Summary ..." - ' - 'mnuDescribeSpecificMultipleResponse - ' - Me.mnuDescribeSpecificMultipleResponse.Enabled = False - Me.mnuDescribeSpecificMultipleResponse.Name = "mnuDescribeSpecificMultipleResponse" - Me.mnuDescribeSpecificMultipleResponse.Size = New System.Drawing.Size(197, 22) - Me.mnuDescribeSpecificMultipleResponse.Tag = "Multiple Response..." - Me.mnuDescribeSpecificMultipleResponse.Text = "Multiple Response..." - Me.mnuDescribeSpecificMultipleResponse.Visible = False - ' 'mnuDescribeSpecificTablesGraphs ' Me.mnuDescribeSpecificTablesGraphs.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeSpecificBarPieChart, Me.mnuDescribeSpecificBoxplotJitterViolinPlot, Me.mnuDescribeSpecificHistogramDensityFrequencyPlot, Me.mnuDescribeSpecificPointPlot, Me.mnuDescribeSpecificLineSmoothPlot, Me.ToolStripSeparator26, Me.mnuDescribeSpecificMapPlot, Me.mnuDescribeSpecificDotPlot, Me.ToolStripSeparator27, Me.mnuDescribeSpecificMosaic, Me.mnuDescribeSpecificCummulativeDistribution, Me.mnuDescribeSpecificParallelCoordinatePlot}) @@ -933,6 +907,13 @@ Partial Class frmMain Me.mnuDescribeSpecificParallelCoordinatePlot.Size = New System.Drawing.Size(209, 22) Me.mnuDescribeSpecificParallelCoordinatePlot.Text = "Parallel Coordinate Plot..." ' + 'mnuDescribeSpecificTables + ' + Me.mnuDescribeSpecificTables.Name = "mnuDescribeSpecificTables" + Me.mnuDescribeSpecificTables.Size = New System.Drawing.Size(180, 22) + Me.mnuDescribeSpecificTables.Tag = "Table_Dialogs" + Me.mnuDescribeSpecificTables.Text = "Tables" + ' 'mnuDescribeGeneral ' Me.mnuDescribeGeneral.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuDescribeGeneralColumnSummaries, Me.mnuDescribeGeneralTabulation, Me.mnuDescribeGeneralGraphics, Me.ToolStripSeparator38, Me.mnuDescribeGeneralUseSummaries}) @@ -5840,7 +5821,5 @@ Partial Class frmMain Friend WithEvents mnuEditWordwrap As ToolStripMenuItem Friend WithEvents mnuPrepareColumnTextSearch As ToolStripMenuItem Friend WithEvents mnuDescribeSpecificTables As ToolStripMenuItem - Friend WithEvents mnuDescribeSpecificSummary As ToolStripMenuItem - Friend WithEvents mnuDescribeSpecificMultipleResponse As ToolStripMenuItem Friend WithEvents ToolStripSeparator26 As ToolStripSeparator End Class diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 1913535a13e..9aa0a9a3e4d 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -407,7 +407,7 @@ Public Class frmMain dlgRegularSequence.ShowDialog() End Sub - Private Sub mnuDescribeSpecificSummary_Click(sender As Object, e As EventArgs) Handles mnuDescribeSpecificSummary.Click + Private Sub mnuDescribeSpecificTables_Click(sender As Object, e As EventArgs) Handles mnuDescribeSpecificTables.Click dlgSummaryTables.ShowDialog() End Sub From 14e9d9061471d0a9fd85bd31bf3ac8e5656018fc Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Mon, 5 Dec 2022 08:53:14 +0100 Subject: [PATCH 24/88] Design Changes --- instat/frmMain.Designer.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/frmMain.Designer.vb b/instat/frmMain.Designer.vb index 98627883a89..11067afaf85 100644 --- a/instat/frmMain.Designer.vb +++ b/instat/frmMain.Designer.vb @@ -912,7 +912,7 @@ Partial Class frmMain Me.mnuDescribeSpecificTables.Name = "mnuDescribeSpecificTables" Me.mnuDescribeSpecificTables.Size = New System.Drawing.Size(180, 22) Me.mnuDescribeSpecificTables.Tag = "Table_Dialogs" - Me.mnuDescribeSpecificTables.Text = "Tables" + Me.mnuDescribeSpecificTables.Text = "Tables..." ' 'mnuDescribeGeneral ' From 65b871278ed46618be21f9fb56c658be4cb8bc2e Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 5 Dec 2022 08:59:25 +0100 Subject: [PATCH 25/88] Added Pair Plot Options subdialog. --- instat/dlgDescribeTwoVarGraph.Designer.vb | 16 ++- instat/dlgDescribeTwoVarGraph.vb | 24 ++++- instat/instat.vbproj | 9 ++ instat/sdgPairPlotOptions.Designer.vb | 120 ++++++++++++++++++++++ instat/sdgPairPlotOptions.resx | 120 ++++++++++++++++++++++ instat/sdgPairPlotOptions.vb | 87 ++++++++++++++++ 6 files changed, 374 insertions(+), 2 deletions(-) create mode 100644 instat/sdgPairPlotOptions.Designer.vb create mode 100644 instat/sdgPairPlotOptions.resx create mode 100644 instat/sdgPairPlotOptions.vb diff --git a/instat/dlgDescribeTwoVarGraph.Designer.vb b/instat/dlgDescribeTwoVarGraph.Designer.vb index cac687f3ed6..c56613a1fb7 100644 --- a/instat/dlgDescribeTwoVarGraph.Designer.vb +++ b/instat/dlgDescribeTwoVarGraph.Designer.vb @@ -103,6 +103,7 @@ Partial Class dlgDescribeTwoVarGraph Me.ucrChkAddLabelsText = New instat.ucrCheck() Me.lblLabelPosition = New System.Windows.Forms.Label() Me.ucrInputLabelColour = New instat.ucrInputComboBox() + Me.cmdPairOptions = New System.Windows.Forms.Button() Me.grpSummaries.SuspendLayout() Me.grpOptions.SuspendLayout() Me.grpTypeOfDispaly.SuspendLayout() @@ -747,7 +748,7 @@ Partial Class dlgDescribeTwoVarGraph Me.ucrBase.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.ucrBase.Location = New System.Drawing.Point(10, 460) Me.ucrBase.Name = "ucrBase" - Me.ucrBase.Size = New System.Drawing.Size(405, 52) + Me.ucrBase.Size = New System.Drawing.Size(408, 52) Me.ucrBase.TabIndex = 8 ' 'ucrReceiverFirstVars @@ -835,12 +836,24 @@ Partial Class dlgDescribeTwoVarGraph Me.ucrInputLabelColour.Size = New System.Drawing.Size(57, 21) Me.ucrInputLabelColour.TabIndex = 63 ' + 'cmdPairOptions + ' + Me.cmdPairOptions.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdPairOptions.Location = New System.Drawing.Point(12, 226) + Me.cmdPairOptions.Name = "cmdPairOptions" + Me.cmdPairOptions.Size = New System.Drawing.Size(119, 23) + Me.cmdPairOptions.TabIndex = 66 + Me.cmdPairOptions.Tag = "Options..." + Me.cmdPairOptions.Text = "Pair Plot Options" + Me.cmdPairOptions.UseVisualStyleBackColor = True + ' 'dlgDescribeTwoVarGraph ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True Me.ClientSize = New System.Drawing.Size(438, 516) + Me.Controls.Add(Me.cmdPairOptions) Me.Controls.Add(Me.ucrInputLabelSize) Me.Controls.Add(Me.lblLabelColour) Me.Controls.Add(Me.lblLabelSize) @@ -946,4 +959,5 @@ Partial Class dlgDescribeTwoVarGraph Friend WithEvents ucrChkAddLabelsText As ucrCheck Friend WithEvents lblLabelPosition As Label Friend WithEvents ucrInputLabelColour As ucrInputComboBox + Friend WithEvents cmdPairOptions As Button End Class \ No newline at end of file diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index 10b5185322d..8d050e3b198 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -52,6 +52,10 @@ Public Class dlgDescribeTwoVarGraph Private strGeomParameterNames() As String = {"geom_jitter", "geom_violin", "geom_bar", "geom_mosaic", "geom_boxplot", "geom_point", "geom_line", "stat_summary_hline", "stat_summary_crossline", "geom_freqpoly", "geom_histogram", "geom_density"} Private strFirstVariablesType, strSecondVariableType As String + + Private clsOperator As New ROperator + Private clsPairThemesFunction As New RFunction + Private dctThemeFunctions As Dictionary(Of String, RFunction) Private bFirstLoad As Boolean = True Private bReset As Boolean = True @@ -277,6 +281,8 @@ Public Class dlgDescribeTwoVarGraph clsMosaicGgplotFunction = New RFunction clsDummyFunction = New RFunction clsRFacet = New RFunction + clsOperator = New ROperator + clsPairThemesFunction = New RFunction clsThemeFunction = GgplotDefaults.clsDefaultThemeFunction.Clone() dctThemeFunctions = New Dictionary(Of String, RFunction)(GgplotDefaults.dctThemeFunctions) clsGlobalAes = New RFunction @@ -293,6 +299,7 @@ Public Class dlgDescribeTwoVarGraph clsScaleColourViridisFunction = GgplotDefaults.clsScaleColorViridisFunction clsAnnotateFunction = GgplotDefaults.clsAnnotateFunction + clsGeomBoxplot = New RFunction clsGeomJitter = New RFunction clsGeomViolin = New RFunction @@ -329,7 +336,7 @@ Public Class dlgDescribeTwoVarGraph ucrSaveGraph.Reset() ucrSelectorTwoVarGraph.Reset() - cmdOptions.Enabled = False + 'cmdOptions.Enabled = False ucrReceiverFirstVars.SetMeAsReceiver() clsDummyFunction.AddParameter("checked", "pair", iPosition:=0) @@ -463,6 +470,13 @@ Public Class dlgDescribeTwoVarGraph clsGeomHistogram.SetRCommand("geom_histogram") clsGeomHistogram.AddParameter("position", Chr(34) & "dodge" & Chr(34)) + clsPairThemesFunction.SetPackageName("ggplot2") + clsPairThemesFunction.SetRCommand("theme") + clsPairThemesFunction.AddParameter("legend.position", Chr(34) & "none" & Chr(34), iPosition:=0) + + clsOperator.SetOperation("+") + clsOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) + clsStatSummaryHline.SetPackageName("ggplot2") clsStatSummaryHline.SetRCommand("stat_summary") clsStatSummaryHline.AddParameter("geom", Chr(34) & "hline" & Chr(34), iPosition:=2) @@ -849,6 +863,12 @@ Public Class dlgDescribeTwoVarGraph bResetSubdialog = False End Sub + Private Sub cmdPairOptions_Click(sender As Object, e As EventArgs) Handles cmdPairOptions.Click + sdgPairPlotOptions.SetRCode(clsNewOperetor:=clsOperator, clsNewPairThemesFunction:=clsPairThemesFunction, clsNewGGpairAesFunction:=clsGGpairAesFunction, bReset = bResetSubdialog) + + bResetSubdialog = False + sdgPairPlotOptions.ShowDialog() + End Sub Private Sub SetFreeYAxis() Dim clsScaleParam As RParameter Dim strXName As String @@ -953,9 +973,11 @@ Public Class dlgDescribeTwoVarGraph ucrReceiverFirstVars.SetMeAsReceiver() If rdoBy.Checked Then cmdOptions.Enabled = True + cmdPairOptions.Enabled = False ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(True, bIsCategoricalNumeric:=True) Else cmdOptions.Enabled = False + cmdPairOptions.Enabled = True ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(False) End If If bRCodeSet Then diff --git a/instat/instat.vbproj b/instat/instat.vbproj index 14261159918..bbd8bccd841 100644 --- a/instat/instat.vbproj +++ b/instat/instat.vbproj @@ -239,6 +239,12 @@ + + sdgPairPlotOptions.vb + + + Form + sdgSummaryThemes.vb @@ -3087,6 +3093,9 @@ dlgThreeVariablePivotTable.vb + + sdgPairPlotOptions.vb + sdgSummaryThemes.vb diff --git a/instat/sdgPairPlotOptions.Designer.vb b/instat/sdgPairPlotOptions.Designer.vb new file mode 100644 index 00000000000..b1d2ae2ffbc --- /dev/null +++ b/instat/sdgPairPlotOptions.Designer.vb @@ -0,0 +1,120 @@ + _ +Partial Class sdgPairPlotOptions + Inherits System.Windows.Forms.Form + + 'Form remplace la méthode Dispose pour nettoyer la liste des composants. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Requise par le Concepteur Windows Form + Private components As System.ComponentModel.IContainer + + 'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form + 'Elle peut être modifiée à l'aide du Concepteur Windows Form. + 'Ne la modifiez pas à l'aide de l'éditeur de code. + _ + Private Sub InitializeComponent() + Me.tpLegend = New System.Windows.Forms.TabPage() + Me.ucrChkShowLegend = New instat.ucrCheck() + Me.ucrInputLegendPosition = New instat.ucrInputComboBox() + Me.ucrChkLegendPosition = New instat.ucrCheck() + Me.tbInventory = New System.Windows.Forms.TabControl() + Me.ucrButtonsInventoryplot = New instat.ucrButtonsSubdialogue() + Me.tpLegend.SuspendLayout() + Me.tbInventory.SuspendLayout() + Me.SuspendLayout() + ' + 'tpLegend + ' + Me.tpLegend.Controls.Add(Me.ucrChkShowLegend) + Me.tpLegend.Controls.Add(Me.ucrInputLegendPosition) + Me.tpLegend.Controls.Add(Me.ucrChkLegendPosition) + Me.tpLegend.Location = New System.Drawing.Point(4, 22) + Me.tpLegend.Name = "tpLegend" + Me.tpLegend.Padding = New System.Windows.Forms.Padding(3) + Me.tpLegend.Size = New System.Drawing.Size(320, 171) + Me.tpLegend.TabIndex = 3 + Me.tpLegend.Text = "Legend" + Me.tpLegend.UseVisualStyleBackColor = True + ' + 'ucrChkShowLegend + ' + Me.ucrChkShowLegend.AutoSize = True + Me.ucrChkShowLegend.Checked = False + Me.ucrChkShowLegend.Location = New System.Drawing.Point(12, 18) + Me.ucrChkShowLegend.Name = "ucrChkShowLegend" + Me.ucrChkShowLegend.Size = New System.Drawing.Size(204, 23) + Me.ucrChkShowLegend.TabIndex = 2 + ' + 'ucrInputLegendPosition + ' + Me.ucrInputLegendPosition.AddQuotesIfUnrecognised = True + Me.ucrInputLegendPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrInputLegendPosition.GetSetSelectedIndex = -1 + Me.ucrInputLegendPosition.IsReadOnly = False + Me.ucrInputLegendPosition.Location = New System.Drawing.Point(156, 56) + Me.ucrInputLegendPosition.Name = "ucrInputLegendPosition" + Me.ucrInputLegendPosition.Size = New System.Drawing.Size(137, 21) + Me.ucrInputLegendPosition.TabIndex = 1 + ' + 'ucrChkLegendPosition + ' + Me.ucrChkLegendPosition.AutoSize = True + Me.ucrChkLegendPosition.Checked = False + Me.ucrChkLegendPosition.Location = New System.Drawing.Point(12, 58) + Me.ucrChkLegendPosition.Name = "ucrChkLegendPosition" + Me.ucrChkLegendPosition.Size = New System.Drawing.Size(204, 23) + Me.ucrChkLegendPosition.TabIndex = 0 + ' + 'tbInventory + ' + Me.tbInventory.Controls.Add(Me.tpLegend) + Me.tbInventory.Location = New System.Drawing.Point(3, 0) + Me.tbInventory.Name = "tbInventory" + Me.tbInventory.SelectedIndex = 0 + Me.tbInventory.Size = New System.Drawing.Size(328, 197) + Me.tbInventory.TabIndex = 2 + ' + 'ucrButtonsInventoryplot + ' + Me.ucrButtonsInventoryplot.AutoSize = True + Me.ucrButtonsInventoryplot.Location = New System.Drawing.Point(49, 199) + Me.ucrButtonsInventoryplot.Name = "ucrButtonsInventoryplot" + Me.ucrButtonsInventoryplot.Size = New System.Drawing.Size(224, 30) + Me.ucrButtonsInventoryplot.TabIndex = 4 + ' + 'sdgPairPlotOptions + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(347, 237) + Me.Controls.Add(Me.ucrButtonsInventoryplot) + Me.Controls.Add(Me.tbInventory) + Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "sdgPairPlotOptions" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent + Me.Text = "Pair Plot Options" + Me.tpLegend.ResumeLayout(False) + Me.tpLegend.PerformLayout() + Me.tbInventory.ResumeLayout(False) + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents tpLegend As TabPage + Friend WithEvents ucrInputLegendPosition As ucrInputComboBox + Friend WithEvents ucrChkLegendPosition As ucrCheck + Friend WithEvents tbInventory As TabControl + Friend WithEvents ucrChkShowLegend As ucrCheck + Friend WithEvents ucrButtonsInventoryplot As ucrButtonsSubdialogue +End Class diff --git a/instat/sdgPairPlotOptions.resx b/instat/sdgPairPlotOptions.resx new file mode 100644 index 00000000000..1af7de150c9 --- /dev/null +++ b/instat/sdgPairPlotOptions.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/instat/sdgPairPlotOptions.vb b/instat/sdgPairPlotOptions.vb new file mode 100644 index 00000000000..47daa8ff5c8 --- /dev/null +++ b/instat/sdgPairPlotOptions.vb @@ -0,0 +1,87 @@ +' R- Instat +' Copyright (C) 2015-2017 +' +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation, either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program. If not, see . + +Imports instat +Imports instat.Translations +Public Class sdgPairPlotOptions + Public clsOperator As New ROperator + Public clsPairThemesFunction, clsGGpairAesFunction As New RFunction + Private bControlsInitialised As Boolean = False + Private Sub sdgPairPlotOptions_Load(sender As Object, e As EventArgs) Handles MyBase.Load + autoTranslate(Me) + End Sub + Public Sub InitialiseControls() + Dim dctLegendPosition As New Dictionary(Of String, String) + + ucrChkShowLegend.SetText("Show Legend") + ucrChkShowLegend.AddParameterPresentCondition(True, "show_legend") + ucrChkShowLegend.AddParameterPresentCondition(False, "show_legend", False) + + ucrChkLegendPosition.SetText("Legend Position") + ucrChkLegendPosition.AddToLinkedControls(ucrInputLegendPosition, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:="None") + ucrInputLegendPosition.SetDropDownStyleAsNonEditable() + ucrInputLegendPosition.SetParameter(New RParameter("legend.position")) + dctLegendPosition.Add("None", Chr(34) & "none" & Chr(34)) + dctLegendPosition.Add("Left", Chr(34) & "left" & Chr(34)) + dctLegendPosition.Add("Right", Chr(34) & "right" & Chr(34)) + dctLegendPosition.Add("Top", Chr(34) & "top" & Chr(34)) + dctLegendPosition.Add("Bottom", Chr(34) & "bottom" & Chr(34)) + ucrInputLegendPosition.SetItems(dctLegendPosition) + ucrChkLegendPosition.AddParameterPresentCondition(True, "legend_position") + ucrChkLegendPosition.AddParameterPresentCondition(False, "legend_position", False) + + End Sub + + Public Sub SetRCode(clsNewOperetor As ROperator, clsNewPairThemesFunction As RFunction, clsNewGGpairAesFunction As RFunction, Optional bReset As Boolean = False) + If Not bControlsInitialised Then + InitialiseControls() + End If + + clsOperator = clsNewOperetor + clsPairThemesFunction = clsNewPairThemesFunction + clsGGpairAesFunction = clsNewGGpairAesFunction + + + ucrChkLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) + ucrInputLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) + ucrChkShowLegend.SetRCode(clsGGpairAesFunction, bReset, bCloneIfNeeded:=True) + + End Sub + 'Private Sub AddRemoveTheme() + ' 'If clsThemeFunction.iParameterCount > 0 Then + ' ' clsBaseOperator.AddParameter("theme", clsRFunctionParameter:=clsThemeFunction, iPosition:=15) + ' 'Else + ' ' clsBaseOperator.RemoveParameterByName("theme") + ' 'End If + 'End Sub + Private Sub ucrChkLegendPosition_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkLegendPosition.ControlValueChanged, ucrInputLegendPosition.ControlValueChanged + If ucrChkLegendPosition.Checked Then + clsOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) + + Else + clsOperator.RemoveParameterByName("right") + End If + + End Sub + + Private Sub ucrChkShowLegend_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkShowLegend.ControlValueChanged + If ucrChkShowLegend.Checked Then + clsGGpairAesFunction.AddParameter("legend", 1, iPosition:=2) + Else + clsGGpairAesFunction.RemoveParameterByName("legend") + End If + End Sub +End Class \ No newline at end of file From 59a4f88f124053c4823dc211bf05a64196f96f39 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 11:11:17 +0300 Subject: [PATCH 26/88] removed default value --- instat/clsInstatOptions.vb | 12 +++++++----- instat/dlgOptions.vb | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/instat/clsInstatOptions.vb b/instat/clsInstatOptions.vb index 563a5bce9e4..8cb44ad1af4 100644 --- a/instat/clsInstatOptions.vb +++ b/instat/clsInstatOptions.vb @@ -282,11 +282,13 @@ Imports RDotNet End If - If iMaxOutputsHeight IsNot Nothing Then - SetMaximumOutputsHeight(iMaxOutputsHeight) - Else - SetMaximumOutputsHeight(clsInstatOptionsDefaults.DEFAULTiMaxOutputsHeight) - End If + 'todo. Temporarily disabled + 'If iMaxOutputsHeight IsNot Nothing Then + ' SetMaximumOutputsHeight(iMaxOutputsHeight) + 'Else + ' SetMaximumOutputsHeight(clsInstatOptionsDefaults.DEFAULTiMaxOutputsHeight) + 'End If + SetMaximumOutputsHeight(-1) End Sub Public Sub SetMaxRows(iRows As Integer) diff --git a/instat/dlgOptions.vb b/instat/dlgOptions.vb index f8790781db4..2c4ed9a818b 100644 --- a/instat/dlgOptions.vb +++ b/instat/dlgOptions.vb @@ -91,7 +91,7 @@ Public Class dlgOptions ucrChkMaximumOutputsHeight.SetText("Set maximum height for outputs") ucrChkMaximumOutputsHeight.AddToLinkedControls(ucrNudMaximumOutputsHeight, {True}) ucrNudMaximumOutputsHeight.Maximum = 1000 - 'todo. temporarily disabled + 'todo. temporarily disabled ucrChkMaximumOutputsHeight.Visible = False ucrNudMaximumOutputsHeight.Visible = False From 90227dccf9428c81e0a57de00a3e93534d220474 Mon Sep 17 00:00:00 2001 From: anastasia-mbithe Date: Mon, 5 Dec 2022 11:14:32 +0300 Subject: [PATCH 27/88] Adding Multiple Response button. --- instat/dlgSummaryTables.Designer.vb | 287 +++++++++++++++------------- instat/dlgSummaryTables.resx | 3 + instat/dlgSummaryTables.vb | 1 + 3 files changed, 160 insertions(+), 131 deletions(-) diff --git a/instat/dlgSummaryTables.Designer.vb b/instat/dlgSummaryTables.Designer.vb index fc4c0529ad1..1ac32deb8a1 100644 --- a/instat/dlgSummaryTables.Designer.vb +++ b/instat/dlgSummaryTables.Designer.vb @@ -38,49 +38,52 @@ Partial Class dlgSummaryTables 'Do not modify it using the code editor. Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() Me.lblFactors = New System.Windows.Forms.Label() Me.cmdSummaries = New System.Windows.Forms.Button() Me.lblSigFigs = New System.Windows.Forms.Label() Me.grpDisplay = New System.Windows.Forms.GroupBox() + Me.ucrNudColumnFactors = New instat.ucrNud() Me.lblColumnFactors = New System.Windows.Forms.Label() + Me.ucrChkDisplaySummaryVariablesAsRow = New instat.ucrCheck() + Me.ucrChkDisplayVariablesAsRows = New instat.ucrCheck() + Me.ucrChkDisplaySummariesAsRow = New instat.ucrCheck() + Me.ucrNudSigFigs = New instat.ucrNud() Me.grpMargin = New System.Windows.Forms.GroupBox() Me.rdoBoth = New System.Windows.Forms.RadioButton() Me.rdoSummary = New System.Windows.Forms.RadioButton() Me.rdoOuter = New System.Windows.Forms.RadioButton() + Me.ucrPnlMargin = New instat.UcrPanel() Me.lblMarginName = New System.Windows.Forms.Label() Me.lblVariables = New System.Windows.Forms.Label() Me.cmdFormatTable = New System.Windows.Forms.Button() Me.rdoFrequencyTable = New System.Windows.Forms.RadioButton() Me.rdoSummaryTable = New System.Windows.Forms.RadioButton() Me.grpPercentages = New System.Windows.Forms.GroupBox() + Me.ucrReceiverPercentages = New instat.ucrReceiverSingle() Me.lblFactorsAsPercentage = New System.Windows.Forms.Label() + Me.ucrChkPercentageProportion = New instat.ucrCheck() + Me.ucrChkDisplayAsPercentage = New instat.ucrCheck() Me.lblFrequencyMarginName = New System.Windows.Forms.Label() Me.cmdMissingOptions = New System.Windows.Forms.Button() Me.ucrChkFrequencyDisplayMargins = New instat.ucrCheck() - Me.ucrReceiverPercentages = New instat.ucrReceiverSingle() - Me.ucrChkPercentageProportion = New instat.ucrCheck() - Me.ucrChkDisplayAsPercentage = New instat.ucrCheck() Me.ucrPnlSummaryFrequencyTables = New instat.UcrPanel() - Me.ucrReorderSummary = New instat.ucrReorder() Me.ucrInputMarginName = New instat.ucrInputTextBox() Me.ucrSaveTable = New instat.ucrSave() Me.ucrChkOmitMissing = New instat.ucrCheck() Me.ucrChkStoreResults = New instat.ucrCheck() Me.ucrChkDisplayMargins = New instat.ucrCheck() - Me.ucrNudColumnFactors = New instat.ucrNud() - Me.ucrChkDisplaySummaryVariablesAsRow = New instat.ucrCheck() - Me.ucrChkDisplayVariablesAsRows = New instat.ucrCheck() - Me.ucrChkDisplaySummariesAsRow = New instat.ucrCheck() - Me.ucrNudSigFigs = New instat.ucrNud() Me.ucrChkSummaries = New instat.ucrCheck() Me.ucrBase = New instat.ucrButtons() Me.ucrReceiverSummaryCols = New instat.ucrReceiverMultiple() Me.ucrReceiverFactors = New instat.ucrReceiverMultiple() Me.ucrReceiverWeights = New instat.ucrReceiverSingle() Me.ucrChkWeight = New instat.ucrCheck() - Me.ucrSelectorSummaryTables = New instat.ucrSelectorByDataFrameAddRemove() - Me.ucrPnlMargin = New instat.UcrPanel() Me.ucrInputFrequencyMarginName = New instat.ucrInputTextBox() + Me.rdoMultipleResponse = New System.Windows.Forms.RadioButton() + Me.ttMultipleResponse = New System.Windows.Forms.ToolTip(Me.components) + Me.ucrReorderSummary = New instat.ucrReorder() + Me.ucrSelectorSummaryTables = New instat.ucrSelectorByDataFrameAddRemove() Me.grpDisplay.SuspendLayout() Me.grpMargin.SuspendLayout() Me.grpPercentages.SuspendLayout() @@ -134,6 +137,19 @@ Partial Class dlgSummaryTables Me.grpDisplay.TabStop = False Me.grpDisplay.Text = "Display" ' + 'ucrNudColumnFactors + ' + Me.ucrNudColumnFactors.AutoSize = True + Me.ucrNudColumnFactors.DecimalPlaces = New Decimal(New Integer() {0, 0, 0, 0}) + Me.ucrNudColumnFactors.Increment = New Decimal(New Integer() {1, 0, 0, 0}) + Me.ucrNudColumnFactors.Location = New System.Drawing.Point(111, 49) + Me.ucrNudColumnFactors.Maximum = New Decimal(New Integer() {100, 0, 0, 0}) + Me.ucrNudColumnFactors.Minimum = New Decimal(New Integer() {0, 0, 0, 0}) + Me.ucrNudColumnFactors.Name = "ucrNudColumnFactors" + Me.ucrNudColumnFactors.Size = New System.Drawing.Size(50, 20) + Me.ucrNudColumnFactors.TabIndex = 19 + Me.ucrNudColumnFactors.Value = New Decimal(New Integer() {0, 0, 0, 0}) + ' 'lblColumnFactors ' Me.lblColumnFactors.AutoSize = True @@ -145,6 +161,46 @@ Partial Class dlgSummaryTables Me.lblColumnFactors.Tag = "" Me.lblColumnFactors.Text = "Column Factors :" ' + 'ucrChkDisplaySummaryVariablesAsRow + ' + Me.ucrChkDisplaySummaryVariablesAsRow.AutoSize = True + Me.ucrChkDisplaySummaryVariablesAsRow.Checked = False + Me.ucrChkDisplaySummaryVariablesAsRow.Location = New System.Drawing.Point(11, 73) + Me.ucrChkDisplaySummaryVariablesAsRow.Name = "ucrChkDisplaySummaryVariablesAsRow" + Me.ucrChkDisplaySummaryVariablesAsRow.Size = New System.Drawing.Size(231, 23) + Me.ucrChkDisplaySummaryVariablesAsRow.TabIndex = 17 + ' + 'ucrChkDisplayVariablesAsRows + ' + Me.ucrChkDisplayVariablesAsRows.AutoSize = True + Me.ucrChkDisplayVariablesAsRows.Checked = False + Me.ucrChkDisplayVariablesAsRows.Location = New System.Drawing.Point(11, 97) + Me.ucrChkDisplayVariablesAsRows.Name = "ucrChkDisplayVariablesAsRows" + Me.ucrChkDisplayVariablesAsRows.Size = New System.Drawing.Size(186, 23) + Me.ucrChkDisplayVariablesAsRows.TabIndex = 11 + ' + 'ucrChkDisplaySummariesAsRow + ' + Me.ucrChkDisplaySummariesAsRow.AutoSize = True + Me.ucrChkDisplaySummariesAsRow.Checked = False + Me.ucrChkDisplaySummariesAsRow.Location = New System.Drawing.Point(11, 73) + Me.ucrChkDisplaySummariesAsRow.Name = "ucrChkDisplaySummariesAsRow" + Me.ucrChkDisplaySummariesAsRow.Size = New System.Drawing.Size(175, 23) + Me.ucrChkDisplaySummariesAsRow.TabIndex = 10 + ' + 'ucrNudSigFigs + ' + Me.ucrNudSigFigs.AutoSize = True + Me.ucrNudSigFigs.DecimalPlaces = New Decimal(New Integer() {0, 0, 0, 0}) + Me.ucrNudSigFigs.Increment = New Decimal(New Integer() {1, 0, 0, 0}) + Me.ucrNudSigFigs.Location = New System.Drawing.Point(111, 23) + Me.ucrNudSigFigs.Maximum = New Decimal(New Integer() {100, 0, 0, 0}) + Me.ucrNudSigFigs.Minimum = New Decimal(New Integer() {0, 0, 0, 0}) + Me.ucrNudSigFigs.Name = "ucrNudSigFigs" + Me.ucrNudSigFigs.Size = New System.Drawing.Size(50, 20) + Me.ucrNudSigFigs.TabIndex = 5 + Me.ucrNudSigFigs.Value = New Decimal(New Integer() {0, 0, 0, 0}) + ' 'grpMargin ' Me.grpMargin.Controls.Add(Me.rdoBoth) @@ -193,6 +249,15 @@ Partial Class dlgSummaryTables Me.rdoOuter.Text = "Outer" Me.rdoOuter.UseVisualStyleBackColor = True ' + 'ucrPnlMargin + ' + Me.ucrPnlMargin.AutoSize = True + Me.ucrPnlMargin.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrPnlMargin.Location = New System.Drawing.Point(6, 14) + Me.ucrPnlMargin.Name = "ucrPnlMargin" + Me.ucrPnlMargin.Size = New System.Drawing.Size(0, 0) + Me.ucrPnlMargin.TabIndex = 13 + ' 'lblMarginName ' Me.lblMarginName.AutoSize = True @@ -232,12 +297,12 @@ Partial Class dlgSummaryTables Me.rdoFrequencyTable.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoFrequencyTable.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoFrequencyTable.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoFrequencyTable.Location = New System.Drawing.Point(107, 7) + Me.rdoFrequencyTable.Location = New System.Drawing.Point(51, 7) Me.rdoFrequencyTable.Name = "rdoFrequencyTable" Me.rdoFrequencyTable.Size = New System.Drawing.Size(129, 27) Me.rdoFrequencyTable.TabIndex = 22 Me.rdoFrequencyTable.TabStop = True - Me.rdoFrequencyTable.Text = "Frequency Table" + Me.rdoFrequencyTable.Text = "Frequency" Me.rdoFrequencyTable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter Me.rdoFrequencyTable.UseVisualStyleBackColor = True ' @@ -249,12 +314,12 @@ Partial Class dlgSummaryTables Me.rdoSummaryTable.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoSummaryTable.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoSummaryTable.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoSummaryTable.Location = New System.Drawing.Point(235, 7) + Me.rdoSummaryTable.Location = New System.Drawing.Point(178, 7) Me.rdoSummaryTable.Name = "rdoSummaryTable" Me.rdoSummaryTable.Size = New System.Drawing.Size(133, 27) Me.rdoSummaryTable.TabIndex = 21 Me.rdoSummaryTable.TabStop = True - Me.rdoSummaryTable.Text = "Summary Table" + Me.rdoSummaryTable.Text = "Summary" Me.rdoSummaryTable.TextAlign = System.Drawing.ContentAlignment.MiddleCenter Me.rdoSummaryTable.UseVisualStyleBackColor = True ' @@ -271,6 +336,19 @@ Partial Class dlgSummaryTables Me.grpPercentages.TabStop = False Me.grpPercentages.Text = "Percentages" ' + 'ucrReceiverPercentages + ' + Me.ucrReceiverPercentages.AutoSize = True + Me.ucrReceiverPercentages.frmParent = Me + Me.ucrReceiverPercentages.Location = New System.Drawing.Point(16, 60) + Me.ucrReceiverPercentages.Margin = New System.Windows.Forms.Padding(0) + Me.ucrReceiverPercentages.Name = "ucrReceiverPercentages" + Me.ucrReceiverPercentages.Selector = Nothing + Me.ucrReceiverPercentages.Size = New System.Drawing.Size(120, 20) + Me.ucrReceiverPercentages.strNcFilePath = "" + Me.ucrReceiverPercentages.TabIndex = 4 + Me.ucrReceiverPercentages.ucrSelector = Nothing + ' 'lblFactorsAsPercentage ' Me.lblFactorsAsPercentage.AutoSize = True @@ -282,6 +360,24 @@ Partial Class dlgSummaryTables Me.lblFactorsAsPercentage.Tag = "Factors as Percentage:" Me.lblFactorsAsPercentage.Text = "Of Factor (Optional):" ' + 'ucrChkPercentageProportion + ' + Me.ucrChkPercentageProportion.AutoSize = True + Me.ucrChkPercentageProportion.Checked = False + Me.ucrChkPercentageProportion.Location = New System.Drawing.Point(5, 171) + Me.ucrChkPercentageProportion.Name = "ucrChkPercentageProportion" + Me.ucrChkPercentageProportion.Size = New System.Drawing.Size(160, 23) + Me.ucrChkPercentageProportion.TabIndex = 3 + ' + 'ucrChkDisplayAsPercentage + ' + Me.ucrChkDisplayAsPercentage.AutoSize = True + Me.ucrChkDisplayAsPercentage.Checked = False + Me.ucrChkDisplayAsPercentage.Location = New System.Drawing.Point(14, 19) + Me.ucrChkDisplayAsPercentage.Name = "ucrChkDisplayAsPercentage" + Me.ucrChkDisplayAsPercentage.Size = New System.Drawing.Size(135, 23) + Me.ucrChkDisplayAsPercentage.TabIndex = 0 + ' 'lblFrequencyMarginName ' Me.lblFrequencyMarginName.AutoSize = True @@ -311,55 +407,14 @@ Partial Class dlgSummaryTables Me.ucrChkFrequencyDisplayMargins.Size = New System.Drawing.Size(213, 23) Me.ucrChkFrequencyDisplayMargins.TabIndex = 24 ' - 'ucrReceiverPercentages - ' - Me.ucrReceiverPercentages.AutoSize = True - Me.ucrReceiverPercentages.frmParent = Nothing - Me.ucrReceiverPercentages.Location = New System.Drawing.Point(16, 60) - Me.ucrReceiverPercentages.Margin = New System.Windows.Forms.Padding(0) - Me.ucrReceiverPercentages.Name = "ucrReceiverPercentages" - Me.ucrReceiverPercentages.Selector = Nothing - Me.ucrReceiverPercentages.Size = New System.Drawing.Size(120, 20) - Me.ucrReceiverPercentages.strNcFilePath = "" - Me.ucrReceiverPercentages.TabIndex = 4 - Me.ucrReceiverPercentages.ucrSelector = Nothing - ' - 'ucrChkPercentageProportion - ' - Me.ucrChkPercentageProportion.AutoSize = True - Me.ucrChkPercentageProportion.Checked = False - Me.ucrChkPercentageProportion.Location = New System.Drawing.Point(5, 171) - Me.ucrChkPercentageProportion.Name = "ucrChkPercentageProportion" - Me.ucrChkPercentageProportion.Size = New System.Drawing.Size(160, 23) - Me.ucrChkPercentageProportion.TabIndex = 3 - ' - 'ucrChkDisplayAsPercentage - ' - Me.ucrChkDisplayAsPercentage.AutoSize = True - Me.ucrChkDisplayAsPercentage.Checked = False - Me.ucrChkDisplayAsPercentage.Location = New System.Drawing.Point(14, 19) - Me.ucrChkDisplayAsPercentage.Name = "ucrChkDisplayAsPercentage" - Me.ucrChkDisplayAsPercentage.Size = New System.Drawing.Size(135, 23) - Me.ucrChkDisplayAsPercentage.TabIndex = 0 - ' 'ucrPnlSummaryFrequencyTables ' Me.ucrPnlSummaryFrequencyTables.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrPnlSummaryFrequencyTables.Location = New System.Drawing.Point(107, 3) + Me.ucrPnlSummaryFrequencyTables.Location = New System.Drawing.Point(44, 3) Me.ucrPnlSummaryFrequencyTables.Name = "ucrPnlSummaryFrequencyTables" - Me.ucrPnlSummaryFrequencyTables.Size = New System.Drawing.Size(260, 33) + Me.ucrPnlSummaryFrequencyTables.Size = New System.Drawing.Size(407, 33) Me.ucrPnlSummaryFrequencyTables.TabIndex = 20 ' - 'ucrReorderSummary - ' - Me.ucrReorderSummary.AutoSize = True - Me.ucrReorderSummary.Location = New System.Drawing.Point(286, 305) - Me.ucrReorderSummary.Name = "ucrReorderSummary" - Me.ucrReorderSummary.Size = New System.Drawing.Size(200, 156) - Me.ucrReorderSummary.TabIndex = 18 - Me.ucrReorderSummary.ucrDataFrameList = Nothing - Me.ucrReorderSummary.ucrReceiver = Nothing - ' 'ucrInputMarginName ' Me.ucrInputMarginName.AddQuotesIfUnrecognised = True @@ -407,59 +462,6 @@ Partial Class dlgSummaryTables Me.ucrChkDisplayMargins.Size = New System.Drawing.Size(150, 23) Me.ucrChkDisplayMargins.TabIndex = 10 ' - 'ucrNudColumnFactors - ' - Me.ucrNudColumnFactors.AutoSize = True - Me.ucrNudColumnFactors.DecimalPlaces = New Decimal(New Integer() {0, 0, 0, 0}) - Me.ucrNudColumnFactors.Increment = New Decimal(New Integer() {1, 0, 0, 0}) - Me.ucrNudColumnFactors.Location = New System.Drawing.Point(111, 49) - Me.ucrNudColumnFactors.Maximum = New Decimal(New Integer() {100, 0, 0, 0}) - Me.ucrNudColumnFactors.Minimum = New Decimal(New Integer() {0, 0, 0, 0}) - Me.ucrNudColumnFactors.Name = "ucrNudColumnFactors" - Me.ucrNudColumnFactors.Size = New System.Drawing.Size(50, 20) - Me.ucrNudColumnFactors.TabIndex = 19 - Me.ucrNudColumnFactors.Value = New Decimal(New Integer() {0, 0, 0, 0}) - ' - 'ucrChkDisplaySummaryVariablesAsRow - ' - Me.ucrChkDisplaySummaryVariablesAsRow.AutoSize = True - Me.ucrChkDisplaySummaryVariablesAsRow.Checked = False - Me.ucrChkDisplaySummaryVariablesAsRow.Location = New System.Drawing.Point(11, 73) - Me.ucrChkDisplaySummaryVariablesAsRow.Name = "ucrChkDisplaySummaryVariablesAsRow" - Me.ucrChkDisplaySummaryVariablesAsRow.Size = New System.Drawing.Size(231, 23) - Me.ucrChkDisplaySummaryVariablesAsRow.TabIndex = 17 - ' - 'ucrChkDisplayVariablesAsRows - ' - Me.ucrChkDisplayVariablesAsRows.AutoSize = True - Me.ucrChkDisplayVariablesAsRows.Checked = False - Me.ucrChkDisplayVariablesAsRows.Location = New System.Drawing.Point(11, 97) - Me.ucrChkDisplayVariablesAsRows.Name = "ucrChkDisplayVariablesAsRows" - Me.ucrChkDisplayVariablesAsRows.Size = New System.Drawing.Size(186, 23) - Me.ucrChkDisplayVariablesAsRows.TabIndex = 11 - ' - 'ucrChkDisplaySummariesAsRow - ' - Me.ucrChkDisplaySummariesAsRow.AutoSize = True - Me.ucrChkDisplaySummariesAsRow.Checked = False - Me.ucrChkDisplaySummariesAsRow.Location = New System.Drawing.Point(11, 73) - Me.ucrChkDisplaySummariesAsRow.Name = "ucrChkDisplaySummariesAsRow" - Me.ucrChkDisplaySummariesAsRow.Size = New System.Drawing.Size(175, 23) - Me.ucrChkDisplaySummariesAsRow.TabIndex = 10 - ' - 'ucrNudSigFigs - ' - Me.ucrNudSigFigs.AutoSize = True - Me.ucrNudSigFigs.DecimalPlaces = New Decimal(New Integer() {0, 0, 0, 0}) - Me.ucrNudSigFigs.Increment = New Decimal(New Integer() {1, 0, 0, 0}) - Me.ucrNudSigFigs.Location = New System.Drawing.Point(111, 23) - Me.ucrNudSigFigs.Maximum = New Decimal(New Integer() {100, 0, 0, 0}) - Me.ucrNudSigFigs.Minimum = New Decimal(New Integer() {0, 0, 0, 0}) - Me.ucrNudSigFigs.Name = "ucrNudSigFigs" - Me.ucrNudSigFigs.Size = New System.Drawing.Size(50, 20) - Me.ucrNudSigFigs.TabIndex = 5 - Me.ucrNudSigFigs.Value = New Decimal(New Integer() {0, 0, 0, 0}) - ' 'ucrChkSummaries ' Me.ucrChkSummaries.AutoSize = True @@ -526,6 +528,46 @@ Partial Class dlgSummaryTables Me.ucrChkWeight.Size = New System.Drawing.Size(84, 23) Me.ucrChkWeight.TabIndex = 5 ' + 'ucrInputFrequencyMarginName + ' + Me.ucrInputFrequencyMarginName.AddQuotesIfUnrecognised = True + Me.ucrInputFrequencyMarginName.AutoSize = True + Me.ucrInputFrequencyMarginName.IsMultiline = False + Me.ucrInputFrequencyMarginName.IsReadOnly = False + Me.ucrInputFrequencyMarginName.Location = New System.Drawing.Point(92, 271) + Me.ucrInputFrequencyMarginName.Name = "ucrInputFrequencyMarginName" + Me.ucrInputFrequencyMarginName.Size = New System.Drawing.Size(70, 21) + Me.ucrInputFrequencyMarginName.TabIndex = 26 + ' + 'rdoMultipleResponse + ' + Me.rdoMultipleResponse.Appearance = System.Windows.Forms.Appearance.Button + Me.rdoMultipleResponse.Enabled = False + Me.rdoMultipleResponse.FlatAppearance.BorderColor = System.Drawing.SystemColors.ActiveCaption + Me.rdoMultipleResponse.FlatAppearance.BorderSize = 2 + Me.rdoMultipleResponse.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption + Me.rdoMultipleResponse.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.rdoMultipleResponse.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.rdoMultipleResponse.Location = New System.Drawing.Point(309, 7) + Me.rdoMultipleResponse.Name = "rdoMultipleResponse" + Me.rdoMultipleResponse.Size = New System.Drawing.Size(133, 27) + Me.rdoMultipleResponse.TabIndex = 28 + Me.rdoMultipleResponse.TabStop = True + Me.rdoMultipleResponse.Text = "Multiple Response" + Me.rdoMultipleResponse.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.ttMultipleResponse.SetToolTip(Me.rdoMultipleResponse, "Not Yet Available") + Me.rdoMultipleResponse.UseVisualStyleBackColor = True + ' + 'ucrReorderSummary + ' + Me.ucrReorderSummary.AutoSize = True + Me.ucrReorderSummary.Location = New System.Drawing.Point(286, 305) + Me.ucrReorderSummary.Name = "ucrReorderSummary" + Me.ucrReorderSummary.Size = New System.Drawing.Size(200, 156) + Me.ucrReorderSummary.TabIndex = 18 + Me.ucrReorderSummary.ucrDataFrameList = Nothing + Me.ucrReorderSummary.ucrReceiver = Nothing + ' 'ucrSelectorSummaryTables ' Me.ucrSelectorSummaryTables.AutoSize = True @@ -538,32 +580,13 @@ Partial Class dlgSummaryTables Me.ucrSelectorSummaryTables.Size = New System.Drawing.Size(213, 183) Me.ucrSelectorSummaryTables.TabIndex = 0 ' - 'ucrPnlMargin - ' - Me.ucrPnlMargin.AutoSize = True - Me.ucrPnlMargin.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrPnlMargin.Location = New System.Drawing.Point(6, 14) - Me.ucrPnlMargin.Name = "ucrPnlMargin" - Me.ucrPnlMargin.Size = New System.Drawing.Size(0, 0) - Me.ucrPnlMargin.TabIndex = 13 - ' - 'ucrInputFrequencyMarginName - ' - Me.ucrInputFrequencyMarginName.AddQuotesIfUnrecognised = True - Me.ucrInputFrequencyMarginName.AutoSize = True - Me.ucrInputFrequencyMarginName.IsMultiline = False - Me.ucrInputFrequencyMarginName.IsReadOnly = False - Me.ucrInputFrequencyMarginName.Location = New System.Drawing.Point(92, 271) - Me.ucrInputFrequencyMarginName.Name = "ucrInputFrequencyMarginName" - Me.ucrInputFrequencyMarginName.Size = New System.Drawing.Size(70, 21) - Me.ucrInputFrequencyMarginName.TabIndex = 26 - ' 'dlgSummaryTables ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True Me.ClientSize = New System.Drawing.Size(489, 571) + Me.Controls.Add(Me.rdoMultipleResponse) Me.Controls.Add(Me.cmdMissingOptions) Me.Controls.Add(Me.ucrChkFrequencyDisplayMargins) Me.Controls.Add(Me.grpPercentages) @@ -652,4 +675,6 @@ Partial Class dlgSummaryTables Friend WithEvents ucrChkFrequencyDisplayMargins As ucrCheck Friend WithEvents ucrReceiverPercentages As ucrReceiverSingle Friend WithEvents cmdMissingOptions As Button + Friend WithEvents rdoMultipleResponse As RadioButton + Friend WithEvents ttMultipleResponse As ToolTip End Class \ No newline at end of file diff --git a/instat/dlgSummaryTables.resx b/instat/dlgSummaryTables.resx index 1af7de150c9..b1844bc465a 100644 --- a/instat/dlgSummaryTables.resx +++ b/instat/dlgSummaryTables.resx @@ -117,4 +117,7 @@ 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/instat/dlgSummaryTables.vb b/instat/dlgSummaryTables.vb index d96cdf3003d..989f2c94a66 100644 --- a/instat/dlgSummaryTables.vb +++ b/instat/dlgSummaryTables.vb @@ -155,6 +155,7 @@ Public Class dlgSummaryTables ucrPnlSummaryFrequencyTables.AddRadioButton(rdoSummaryTable) ucrPnlSummaryFrequencyTables.AddRadioButton(rdoFrequencyTable) + ucrPnlSummaryFrequencyTables.AddRadioButton(rdoMultipleResponse) ucrPnlSummaryFrequencyTables.AddParameterValuesCondition(rdoSummaryTable, "rdo_checked", "rdoSummary") ucrPnlSummaryFrequencyTables.AddParameterValuesCondition(rdoFrequencyTable, "rdo_checked", "rdoFrequency") ucrPnlSummaryFrequencyTables.AddToLinkedControls({ucrReceiverSummaryCols}, {rdoSummaryTable}, bNewLinkedHideIfParameterMissing:=True) From aab67ae6b5a44197fc766085e4a44a1a9b69b94c Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Mon, 5 Dec 2022 09:39:25 +0100 Subject: [PATCH 28/88] Update instat/static/InstatObject/R/Backend_Components/summary_functions.R --- .../InstatObject/R/Backend_Components/summary_functions.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/Backend_Components/summary_functions.R b/instat/static/InstatObject/R/Backend_Components/summary_functions.R index f4ae923e3f2..3f2f3a7d991 100644 --- a/instat/static/InstatObject/R/Backend_Components/summary_functions.R +++ b/instat/static/InstatObject/R/Backend_Components/summary_functions.R @@ -176,7 +176,7 @@ DataBook$set("public", "calculate_summary", function(data_name, columns_to_summa #TODO result_names could be horizontal/vertical vector, matrix or single value else result_name <- result_names[i,j] if(percentage_type == "none") { - summary_function_exp <- paste0(summary_type, "(x = ", column_names, function_exp) + summary_function_exp <- paste0(summary_type, "(x = ", column_names, function_exp) summary_calculation <- instat_calculation$new(type = type, result_name = result_name, function_exp = summary_function_exp, calculated_from = calculated_from, save = save) From c82a6cd16008de598b71cb10906a48a90faeb7a5 Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Mon, 5 Dec 2022 15:56:20 +0300 Subject: [PATCH 29/88] minor code change --- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 6 +++++- instat/dlgReorderDataFrame.vb | 4 ---- instat/frmMain.vb | 5 ----- instat/ucrColumnMetadata.vb | 4 ---- instat/ucrDataView.vb | 5 +---- 5 files changed, 6 insertions(+), 18 deletions(-) diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 22eeacacc92..0d451d6bd81 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -84,7 +84,11 @@ Public MustInherit Class ucrReoGrid lstWorkSheetsFound.Add(fillWorkSheet) End If Next - If lstWorkSheetsFound.Count > 1 Then + + Dim bReorder As Boolean = If(lstWorkSheetsFound.Count > 1, _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). + SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()), True) + + If Not bReorder Then 'reorder the worksheets based on the filled list For i As Integer = 0 To lstWorkSheetsFound.Count - 1 grdData.MoveWorksheet(lstWorkSheetsFound(i), i) diff --git a/instat/dlgReorderDataFrame.vb b/instat/dlgReorderDataFrame.vb index b018f7030e2..4b06a36e683 100644 --- a/instat/dlgReorderDataFrame.vb +++ b/instat/dlgReorderDataFrame.vb @@ -77,8 +77,4 @@ Public Class dlgReorderDataFrame Private Sub Controls_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrDataFrameToReorder.ControlContentsChanged TestOkEnabled() End Sub - - Private Sub ucrBase_ClickOk(sender As Object, e As EventArgs) Handles ucrBase.ClickOk - frmMain.ReOrderWorkSheets() - End Sub End Class \ No newline at end of file diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 42ca76703c4..c1598a140a3 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -1513,11 +1513,6 @@ Public Class frmMain ucrColumnMeta.SetCurrentDataFrame(iIndex) End Sub - Public Sub ReOrderWorkSheets() - ucrDataViewer.ReOrderWorkSheets() - ucrColumnMeta.ReOrderWorkSheets() - End Sub - Private Sub CummulativeDistributionToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles mnuDescribeSpecificCummulativeDistribution.Click dlgCumulativeDistribution.ShowDialog() End Sub diff --git a/instat/ucrColumnMetadata.vb b/instat/ucrColumnMetadata.vb index c4f6985a4aa..13577fc4dcf 100644 --- a/instat/ucrColumnMetadata.vb +++ b/instat/ucrColumnMetadata.vb @@ -123,10 +123,6 @@ Public Class ucrColumnMetadata _grid.SetCurrentDataFrame(iIndex) End Sub - Public Sub ReOrderWorkSheets() - _grid.ReOrderWorksheets() - End Sub - Private Sub DeleteLables(strColumnName As String) Dim clsDeleteLabelsFunction As New RFunction diff --git a/instat/ucrDataView.vb b/instat/ucrDataView.vb index 364de9c1d05..9ce931bbf0c 100644 --- a/instat/ucrDataView.vb +++ b/instat/ucrDataView.vb @@ -139,6 +139,7 @@ Public Class ucrDataView End If _clsDataBook.RefreshData() AddAndUpdateWorksheets() + _grid.ReOrderWorksheets() _grid.RemoveOldWorksheets() If _clsDataBook.DataFrames.Count = 0 Then RefreshDisplayInformation() @@ -240,10 +241,6 @@ Public Class ucrDataView Return _grid.GetWorksheetCount End Function - Public Sub ReOrderWorkSheets() - _grid.ReOrderWorksheets() - End Sub - Private Sub RefreshDisplayInformation() If GetWorkSheetCount() <> 0 AndAlso _clsDataBook IsNot Nothing AndAlso GetCurrentDataFrameFocus() IsNot Nothing Then frmMain.tstatus.Text = _grid.CurrentWorksheet.Name From 58cf57bed833b42d54edfb136ff7254e0d54e699 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 17:35:24 +0300 Subject: [PATCH 30/88] Refactored 3 dialogs --- instat/dlgHypothesisTestsCalculator.vb | 45 +++-- instat/dlgModelling.vb | 232 ++++++++++++++----------- instat/dlgOneVarFitModel.vb | 3 +- 3 files changed, 164 insertions(+), 116 deletions(-) diff --git a/instat/dlgHypothesisTestsCalculator.vb b/instat/dlgHypothesisTestsCalculator.vb index 8c38fe7cb6f..1e6c3c194ae 100644 --- a/instat/dlgHypothesisTestsCalculator.vb +++ b/instat/dlgHypothesisTestsCalculator.vb @@ -87,27 +87,46 @@ Public Class dlgHypothesisTestsCalculator End Sub Private Sub SetDefaults() - ucrSelectorColumn.Reset() - ucrReceiverForTestColumn.SetMeAsReceiver() - ucrSaveResult.Reset() - ucrSaveResult.ucrChkSave.Checked = False - ucrBase.clsRsyntax.SetAssignTo("Last_Test", strTempModel:="Last_Test", strTempDataframe:=ucrSelectorColumn.ucrAvailableDataFrames.cboAvailableDataFrames.SelectedItem) + + ucrBase.clsRsyntax.clsBaseCommandString.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorColumn.strCurrentDataFrame, + strObjectName:="last_model") + ucrBase.clsRsyntax.bExcludeAssignedFunctionOutput = False - ucrBase.clsRsyntax.iCallType = 2 - ucrChkDisplayModel.Checked = True - ucrChkIncludeArguments.Checked = False - ucrChkSummaryModel.AddRSyntaxContainsFunctionNamesCondition(True, {"summary"}, bNewIsPositive:=True) - ucrInputComboRPackage.SetName("Stats1") - clsAttach.SetRCommand("attach") - clsDetach.SetRCommand("detach") + clsSummary.SetRCommand("summary") + clsSummary.bExcludeAssignedFunctionOutput = False + + clsAttach.SetRCommand("attach") clsAttach.AddParameter("what", clsRFunctionParameter:=ucrSelectorColumn.ucrAvailableDataFrames.clsCurrDataFrame) + clsDetach.SetRCommand("detach") clsDetach.AddParameter("name", clsRFunctionParameter:=ucrSelectorColumn.ucrAvailableDataFrames.clsCurrDataFrame) - clsSummary.AddParameter("object", clsRCodeStructureParameter:=ucrBase.clsRsyntax.clsBaseCommandString, iPosition:=0) clsDetach.AddParameter("unload", "TRUE") ucrBase.clsRsyntax.AddToBeforeCodes(clsAttach) ucrBase.clsRsyntax.AddToAfterCodes(clsDetach) + + ucrChkDisplayModel.Checked = True + ucrChkIncludeArguments.Checked = False + ucrChkSummaryModel.AddRSyntaxContainsFunctionNamesCondition(True, {"summary"}, bNewIsPositive:=True) + ucrInputComboRPackage.SetName("Stats1") + ucrSelectorColumn.Reset() + ucrReceiverForTestColumn.SetMeAsReceiver() + ucrSaveResult.Reset() + ucrSaveResult.ucrChkSave.Checked = False ucrTryModelling.SetRSyntax(ucrBase.clsRsyntax) + + End Sub + + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveResult.ControlValueChanged + clsSummary.AddParameter("object", strParameterValue:=ucrBase.clsRsyntax.clsBaseCommandString.GetRObjectToAssignTo(), iPosition:=0) + clsSummary.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorColumn.strCurrentDataFrame, + strObjectName:="last_summary") + End Sub Private Sub SetRcodeForControls(bReset As Boolean) diff --git a/instat/dlgModelling.vb b/instat/dlgModelling.vb index 80afd5edd59..f4b10b919ba 100644 --- a/instat/dlgModelling.vb +++ b/instat/dlgModelling.vb @@ -25,7 +25,7 @@ Public Class dlgModelling Public clsRModelFunction As New RFunction Public clsRYVariable, clsRXVariable As String Private ucrAvailableDataframe As ucrDataFrame - Public clsRAovFunction, clsRAovPValFunction, clsREstPValFunction, clsRgeom_point, clsRPredFunction, clsRDFFunction, clsRFittedValues, clsRWriteFitted, clsRResiduals, clsRWriteResiduals, clsRStdResiduals, clsRWriteStdResiduals, clsRLeverage, clsRWriteLeverage As New RFunction + 'Public clsRAovFunction, clsRAovPValFunction, clsREstPValFunction, clsRgeom_point, clsRPredFunction, clsRDFFunction, clsRFittedValues, clsRWriteFitted, clsRResiduals, clsRWriteResiduals, clsRStdResiduals, clsRWriteStdResiduals, clsRLeverage, clsRWriteLeverage As New RFunction Public clsVisReg, clsRaesFunction, clsRStat_smooth, clsR_ribbon, clsRaes_ribbon As New RFunction Public clsWhichFunction As New RFunction Public bUpdating As Boolean = False @@ -76,44 +76,38 @@ Public Class dlgModelling Private Sub SetDefaults() clsAttach = New RFunction clsDetach = New RFunction - clsFormulaFunction = New RFunction clsRModelFunction = New RFunction - clsRAovFunction = New RFunction - clsRAovPValFunction = New RFunction clsConfint = New RFunction - clsREstPValFunction = New RFunction - clsRFittedValues = New RFunction - clsRResiduals = New RFunction - clsRStdResiduals = New RFunction - clsRWriteResiduals = New RFunction - clsRWriteLeverage = New RFunction - clsRLeverage = New RFunction - clsRWriteStdResiduals = New RFunction - clsRWriteFitted = New RFunction clsSummaryFunction = New RFunction clsAnovaFunction = New RFunction - clsRgeom_point = New RFunction clsVisReg = New RFunction clsRstandardFunction = New RFunction clsHatvaluesFunction = New RFunction clsResidualFunction = New RFunction clsFittedValuesFunction = New RFunction + '--------------------------------------------------------- + 'todo. what was the purpose of these RFunctions? delete? + 'clsRAovFunction = New RFunction + 'clsRAovPValFunction = New RFunction + 'clsREstPValFunction = New RFunction + 'clsRFittedValues = New RFunction + 'clsRResiduals = New RFunction + 'clsRStdResiduals = New RFunction + + 'clsRWriteResiduals = New RFunction + 'clsRWriteLeverage = New RFunction + 'clsRLeverage = New RFunction + 'clsRWriteStdResiduals = New RFunction + 'clsRWriteFitted = New RFunction + ' clsRgeom_point = New RFunction + '--------------------------------------------------------- + ucrBase.clsRsyntax.ClearCodes() bUpdating = True - ucrSelectorModelling.Reset() - - ucrReceiverForTestColumn.SetMeAsReceiver() - - ucrBase.clsRsyntax.SetCommandString("") - ucrReceiverForTestColumn.AddToReceiverAtCursorPosition("lm(, na.action = na.exclude)", 25) - - - ucrSaveResult.Reset() - clsAttach.SetRCommand("attach") clsAttach.AddParameter("what", clsRFunctionParameter:=ucrSelectorModelling.ucrAvailableDataFrames.clsCurrDataFrame, iPosition:=0) @@ -121,91 +115,169 @@ Public Class dlgModelling clsDetach.AddParameter("name", clsRFunctionParameter:=ucrSelectorModelling.ucrAvailableDataFrames.clsCurrDataFrame, iPosition:=0) clsDetach.AddParameter("unload", "TRUE", iPosition:=1) - - ucrBase.clsRsyntax.SetAssignTo("last_model", strTempModel:="last_model", strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.SelectedItem) + ucrBase.clsRsyntax.SetCommandString("") + ucrBase.clsRsyntax.clsBaseCommandString.SetAssignToOutputObject(strRObjectToAssignTo:="last_model", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Model, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame) ucrBase.clsRsyntax.bExcludeAssignedFunctionOutput = False - ucrBase.clsRsyntax.iCallType = 2 - - ucrChkIncludeArguments.Checked = False - ucrInputComboRPackage.SetName("stats") 'Residual Plots dctPlotFunctions = New Dictionary(Of String, RFunction)(clsRegressionDefaults.dctModelPlotFunctions) - clsRgeom_point = clsRegressionDefaults.clsDefaultRgeom_pointFunction.Clone - - clsRAovFunction.SetPackageName("stats") - clsRAovFunction.SetRCommand("anova") - clsRAovFunction.iCallType = 2 - 'FitModel clsVisReg.SetPackageName("visreg") clsVisReg.SetRCommand("visreg") clsVisReg.AddParameter("type", Chr(34) & "conditional" & Chr(34)) clsVisReg.AddParameter("gg", "TRUE") - clsVisReg.iCallType = 3 clsVisReg.bExcludeAssignedFunctionOutput = False 'Model clsFormulaFunction = clsRegressionDefaults.clsDefaultFormulaFunction.Clone - clsFormulaFunction.iCallType = 2 + clsFormulaFunction.bExcludeAssignedFunctionOutput = False 'Summary clsSummaryFunction = clsRegressionDefaults.clsDefaultSummary.Clone - clsSummaryFunction.iCallType = 2 + clsSummaryFunction.bExcludeAssignedFunctionOutput = False 'ANOVA clsAnovaFunction = clsRegressionDefaults.clsDefaultAnovaFunction.Clone - clsAnovaFunction.iCallType = 2 + clsAnovaFunction.bExcludeAssignedFunctionOutput = False 'Confidence Interval clsConfint = clsRegressionDefaults.clsDefaultConfint.Clone - clsConfint.iCallType = 2 + clsConfint.bExcludeAssignedFunctionOutput = False + + '-------------------------------------------------------------------- + 'todo. what was the purpose of these RFunctions? Delete + 'clsRgeom_point = clsRegressionDefaults.clsDefaultRgeom_pointFunction.Clone + + 'clsRAovFunction.SetPackageName("stats") + 'clsRAovFunction.SetRCommand("anova") + 'clsRAovFunction.iCallType = 2 'Anova +Pvalue - clsREstPValFunction = clsRegressionDefaults.clsDefaultRaovPValueFunction.Clone - ' clsRaovpvalFunction.AddParameter("", clsRFunctionParameter:=clsRLmOrGLM) - clsREstPValFunction.iCallType = 2 + 'clsREstPValFunction = clsRegressionDefaults.clsDefaultRaovPValueFunction.Clone + 'clsRaovpvalFunction.AddParameter("", clsRFunctionParameter:=clsRLmOrGLM) + 'clsREstPValFunction.iCallType = 2 + 'todo. where is it used? 'ucrSave (sdgSimpleRegOptions) Fitted Values - clsRWriteFitted = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone - clsRWriteFitted.SetAssignTo(sdgSimpleRegOptions.ucrSaveFittedColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveFittedColumnName.GetText, bAssignToIsPrefix:=True) - ' clsRWriteFitted.iCallType = 3 + 'clsRWriteFitted = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone + 'clsRWriteFitted.SetAssignTo(sdgSimpleRegOptions.ucrSaveFittedColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveFittedColumnName.GetText, bAssignToIsPrefix:=True) + 'clsRWriteFitted.iCallType = 3 'ucrSave (sdgSimpleRegOptions) Residuals - clsRWriteResiduals = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone - clsRWriteResiduals.SetAssignTo(sdgSimpleRegOptions.ucrSaveResidualsColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveResidualsColumnName.GetText, bAssignToIsPrefix:=True) - ' clsRWriteResiduals.iCallType = 3 + 'clsRWriteResiduals = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone + 'clsRWriteResiduals.SetAssignTo(sdgSimpleRegOptions.ucrSaveResidualsColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveResidualsColumnName.GetText, bAssignToIsPrefix:=True) + 'clsRWriteResiduals.iCallType = 3 'ucrSave (sdgSimpleRegOptions) StdResiduals - clsRWriteStdResiduals = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone - clsRWriteStdResiduals.SetAssignTo(sdgSimpleRegOptions.ucrSaveStdResidualsColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveStdResidualsColumnName.GetText, bAssignToIsPrefix:=True) - ' clsRWriteStdResiduals.iCallType = 3 + 'clsRWriteStdResiduals = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone + 'clsRWriteStdResiduals.SetAssignTo(sdgSimpleRegOptions.ucrSaveStdResidualsColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveStdResidualsColumnName.GetText, bAssignToIsPrefix:=True) + 'clsRWriteStdResiduals.iCallType = 3 'ucrSave (sdgSimpleRegOptions) Leverage - clsRWriteLeverage = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone - clsRWriteLeverage.SetAssignTo(sdgSimpleRegOptions.ucrSaveLeverageColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveLeverageColumnName.GetText, bAssignToIsPrefix:=True) + 'clsRWriteLeverage = clsRegressionDefaults.clsDefaultAddColumnsToData.Clone + 'clsRWriteLeverage.SetAssignTo(sdgSimpleRegOptions.ucrSaveLeverageColumnName.GetText, strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=sdgSimpleRegOptions.ucrSaveLeverageColumnName.GetText, bAssignToIsPrefix:=True) 'clsRWriteLeverage.iCallType = 3 + '-------------------------------------------------------------------- clsResidualFunction.SetRCommand("residuals") - clsFittedValuesFunction.SetRCommand("fitted.values") - clsRstandardFunction.SetRCommand("rstandard") - clsHatvaluesFunction.SetRCommand("hatvalues") ucrBase.clsRsyntax.AddToBeforeCodes(clsAttach, 1) ucrBase.clsRsyntax.AddToAfterCodes(clsDetach, 1000) ucrBase.clsRsyntax.AddToAfterCodes(clsSummaryFunction, 2) + ucrSelectorModelling.Reset() + ucrChkIncludeArguments.Checked = False + ucrInputComboRPackage.SetName("stats") + ucrReceiverForTestColumn.SetMeAsReceiver() + ucrReceiverForTestColumn.AddToReceiverAtCursorPosition("lm(, na.action = na.exclude)", 25) + ucrSaveResult.Reset() ucrTryModelling.SetRSyntax(ucrBase.clsRsyntax) - bResetDisplayOptions = True bUpdating = False End Sub + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveResult.ControlValueChanged + + Dim strAssginTo As String + strAssginTo = ucrBase.clsRsyntax.GetstrAssignTo() + + '--------------------------------------------------------------------- + 'model summaries outputs + + 'stats output formula for the model + clsFormulaFunction.AddParameter("x", strParameterValue:=strAssginTo, iPosition:=0) + clsFormulaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + 'anova output summary for the model + clsAnovaFunction.AddParameter("object", strParameterValue:=strAssginTo, iPosition:=0) + clsAnovaFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + 'estimates output for the model + clsSummaryFunction.AddParameter("object", strParameterValue:=strAssginTo, iPosition:=0) + clsSummaryFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + + 'confidence output limits for the model + clsConfint.AddParameter("object", strParameterValue:=strAssginTo, iPosition:=0) + clsConfint.SetAssignToOutputObject(strRObjectToAssignTo:="last_summary", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Summary, + strRObjectFormatToAssignTo:=RObjectFormat.Text, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_summary") + + '--------------------------------------------------------------------- + 'column outputs + 'note set assign has not been set here because it's done at the sub dialog level + 'through individual save controls linked to this dialog data frame selector + + clsResidualFunction.AddParameter("object", strParameterValue:=strAssginTo, iPosition:=0) + clsFittedValuesFunction.AddParameter("object", strParameterValue:=strAssginTo, iPosition:=0) + clsRstandardFunction.AddParameter("model", strParameterValue:=strAssginTo, iPosition:=0) + clsHatvaluesFunction.AddParameter("model", strParameterValue:=strAssginTo, iPosition:=0) + + '--------------------------------------------------------------------- + 'graphical outputs + + 'model plot output + clsVisReg.AddParameter("fit", strParameterValue:=strAssginTo, iPosition:=0) + clsVisReg.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_graph") + + 'residual plots outputs + For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions + kvp.Value.AddParameter("x", strParameterValue:=strAssginTo, iPosition:=0) + kvp.Value.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorModelling.strCurrentDataFrame, + strObjectName:="last_graph") + Next + + End Sub + Private Sub TestOkEnabled() If ucrSaveResult.IsComplete AndAlso Not ucrReceiverForTestColumn.IsEmpty Then ucrBase.OKEnabled(True) @@ -505,7 +577,6 @@ Public Class dlgModelling Private Sub cmdDisplayOptions_Click(sender As Object, e As EventArgs) Handles cmdDisplayOptions.Click sdgSimpleRegOptions.SetRCode(clsNewRSyntax:=ucrBase.clsRsyntax, clsNewFormulaFunction:=clsFormulaFunction, clsNewAnovaFunction:=clsAnovaFunction, clsNewRSummaryFunction:=clsSummaryFunction, clsNewConfint:=clsConfint, clsNewVisReg:=clsVisReg, dctNewPlot:=dctPlotFunctions, clsNewResidualFunction:=clsResidualFunction, clsNewFittedValuesFunction:=clsFittedValuesFunction, clsNewRstandardFunction:=clsRstandardFunction, clsNewHatvaluesFunction:=clsHatvaluesFunction, ucrNewAvailableDatafrane:=ucrSelectorModelling.ucrAvailableDataFrames, bReset:=bResetDisplayOptions) sdgSimpleRegOptions.ShowDialog() - GraphAssignTo() bResetDisplayOptions = False End Sub @@ -530,7 +601,6 @@ Public Class dlgModelling bUpdating = True ucrSaveResult.SetRCode(ucrBase.clsRsyntax.clsBaseCommandString, bReset) bUpdating = False - SetObjectInFunctions() End Sub @@ -539,50 +609,10 @@ Public Class dlgModelling TestOkEnabled() End Sub - Private Sub GraphAssignTo() - 'Dim lstPlotNames As New List(Of String) - 'Dim i As Integer = 0 - - 'lstPlotNames = New List(Of String)({"last_residplot", "last_qqplot", "last_scaleloc", "last_cooksdist", "last_residlev", "last_cookslev"}) - - clsVisReg.SetAssignTo("last_visreg", strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_visreg") - 'For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - ' kvp.Value.SetAssignTo(lstPlotNames(index:=i), strTempDataframe:=ucrSelectorModelling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:=lstPlotNames(index:=i)) - ' i = i + 1 - 'Next - End Sub - Private Sub ucrSaveResult_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrSaveResult.ControlContentsChanged, ucrReceiverForTestColumn.ControlContentsChanged TestOkEnabled() End Sub - Private Sub ucrSaveResult_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSaveResult.ControlValueChanged - If Not bUpdating Then - SetObjectInFunctions() - End If - End Sub - - Private Sub SetObjectInFunctions() - Dim strAssginTo As String - - strAssginTo = ucrBase.clsRsyntax.GetstrAssignTo() - - clsFormulaFunction.AddParameter("x", strAssginTo) - clsAnovaFunction.AddParameter("object", strAssginTo) - clsSummaryFunction.AddParameter("object", strAssginTo) - clsConfint.AddParameter("object", strAssginTo) - clsVisReg.AddParameter("fit", strAssginTo) - - For Each kvp As KeyValuePair(Of String, RFunction) In dctPlotFunctions - kvp.Value.AddParameter("x", strAssginTo, iPosition:=0) - Next - - clsResidualFunction.AddParameter("object", strAssginTo) - clsFittedValuesFunction.AddParameter("object", strAssginTo) - clsRstandardFunction.AddParameter("model", strAssginTo) - clsHatvaluesFunction.AddParameter("model", strAssginTo) - End Sub - Private Sub ucrInputComboRPackage_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrInputComboRPackage.ControlValueChanged Select Case ucrInputComboRPackage.GetText Case "stats" diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index 68be5519704..a4d42afb9bc 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -500,8 +500,7 @@ Public Class dlgOneVarFitModel bResetFitModDisplay = True End Sub - Private Sub ucrBase_BeforeClickOk(sender As Object, e As EventArgs) Handles ucrBase.BeforeClickOk - 'todo + Private Sub assignToControlsChanged(ucrChangedControl As ucrCore) Handles ucrSaveModel.ControlValueChanged clsRplotFunction.AddParameter("x", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=0) clsRplotPPCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) clsRplotCdfCompFunction.AddParameter("ft", strParameterValue:=clsROneVarFitModelFunction.GetRObjectToAssignTo(), iPosition:=1) From 1431ee224679751d6ff2a59a76c8fff5e0202fb4 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 5 Dec 2022 17:35:48 +0300 Subject: [PATCH 31/88] removed empty line --- instat/dlgOneVarFitModel.vb | 1 - 1 file changed, 1 deletion(-) diff --git a/instat/dlgOneVarFitModel.vb b/instat/dlgOneVarFitModel.vb index a4d42afb9bc..473f3368c3c 100644 --- a/instat/dlgOneVarFitModel.vb +++ b/instat/dlgOneVarFitModel.vb @@ -461,7 +461,6 @@ Public Class dlgOneVarFitModel clsMeanCIFunction.AddParameter("conf.level", "0.95", iPosition:=1) clsMeanCIFunction.AddParameter("method", Chr(34) & "classic" & Chr(34), iPosition:=2) - clsMedianCIFunction.SetPackageName("DescTools") clsMedianCIFunction.SetRCommand("MedianCI ") clsMedianCIFunction.AddParameter("method", Chr(34) & "exact" & Chr(34), iPosition:=2) From 5f3f6390edca62ac8bd3bb34cdf9b48c5536b0e3 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 5 Dec 2022 16:07:57 +0100 Subject: [PATCH 32/88] Added Pair Plot Options. --- instat/dlgDescribeTwoVarGraph.Designer.vb | 2 +- instat/dlgDescribeTwoVarGraph.vb | 53 +++++++++++------------ instat/sdgPairPlotOptions.Designer.vb | 50 ++++++++++----------- instat/sdgPairPlotOptions.vb | 45 ++++++++----------- 4 files changed, 70 insertions(+), 80 deletions(-) diff --git a/instat/dlgDescribeTwoVarGraph.Designer.vb b/instat/dlgDescribeTwoVarGraph.Designer.vb index c56613a1fb7..f8bd1fbf831 100644 --- a/instat/dlgDescribeTwoVarGraph.Designer.vb +++ b/instat/dlgDescribeTwoVarGraph.Designer.vb @@ -839,7 +839,7 @@ Partial Class dlgDescribeTwoVarGraph 'cmdPairOptions ' Me.cmdPairOptions.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdPairOptions.Location = New System.Drawing.Point(12, 226) + Me.cmdPairOptions.Location = New System.Drawing.Point(11, 226) Me.cmdPairOptions.Name = "cmdPairOptions" Me.cmdPairOptions.Size = New System.Drawing.Size(119, 23) Me.cmdPairOptions.TabIndex = 66 diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index 8d050e3b198..912b64e5338 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -17,12 +17,12 @@ Imports instat.Translations Public Class dlgDescribeTwoVarGraph - Private clsBaseOperator, clsCoordPolarStartOperator As New ROperator + Private clsBaseOperator, clsPairOperator, clsCoordPolarStartOperator As New ROperator Private clsRGGplotFunction, clsMosaicGgplotFunction, clsRFacet, clsThemeFunction, clsGlobalAes, clsLabsFunction, clsXlabsFunction, clsYlabFunction, clsXScaleContinuousFunction, clsYScaleContinuousFunction, clsCoordPolarFunction, clsXScaleDateFunction, clsYScaleDateFunction, clsScaleFillViridisFunction, - clsScaleColourViridisFunction As New RFunction + clsScaleColourViridisFunction, clsPairThemesFunction As New RFunction 'Geoms Private clsGeomJitter, clsGeomViolin, clsGeomBar, clsGeomMosaic, clsGeomBoxplot, clsGeomPoint, clsGeomLine, clsStatSummaryHline, clsStatSummaryCrossbar, @@ -53,8 +53,6 @@ Public Class dlgDescribeTwoVarGraph Private strFirstVariablesType, strSecondVariableType As String - Private clsOperator As New ROperator - Private clsPairThemesFunction As New RFunction Private dctThemeFunctions As Dictionary(Of String, RFunction) Private bFirstLoad As Boolean = True @@ -278,11 +276,11 @@ Public Class dlgDescribeTwoVarGraph Private Sub SetDefaults() clsGGpairsFunction = New RFunction clsRGGplotFunction = New RFunction + clsPairThemesFunction = New RFunction clsMosaicGgplotFunction = New RFunction clsDummyFunction = New RFunction + clsPairOperator = New ROperator clsRFacet = New RFunction - clsOperator = New ROperator - clsPairThemesFunction = New RFunction clsThemeFunction = GgplotDefaults.clsDefaultThemeFunction.Clone() dctThemeFunctions = New Dictionary(Of String, RFunction)(GgplotDefaults.dctThemeFunctions) clsGlobalAes = New RFunction @@ -299,7 +297,6 @@ Public Class dlgDescribeTwoVarGraph clsScaleColourViridisFunction = GgplotDefaults.clsScaleColorViridisFunction clsAnnotateFunction = GgplotDefaults.clsAnnotateFunction - clsGeomBoxplot = New RFunction clsGeomJitter = New RFunction clsGeomViolin = New RFunction @@ -376,6 +373,13 @@ Public Class dlgDescribeTwoVarGraph clsGGpairsFunction.SetPackageName("GGally") clsGGpairsFunction.SetRCommand("ggpairs") + clsPairThemesFunction.SetPackageName("ggplot2") + clsPairThemesFunction.SetRCommand("theme") + clsPairThemesFunction.AddParameter("legend.position", Chr(34) & "none" & Chr(34), iPosition:=0) + + clsPairOperator.SetOperation("+") + clsPairOperator.AddParameter("left", clsRFunctionParameter:=clsGGpairsFunction, iPosition:=0) + clsBaseOperator.SetOperation("+") clsRGGplotFunction.SetPackageName("ggplot2") @@ -470,13 +474,6 @@ Public Class dlgDescribeTwoVarGraph clsGeomHistogram.SetRCommand("geom_histogram") clsGeomHistogram.AddParameter("position", Chr(34) & "dodge" & Chr(34)) - clsPairThemesFunction.SetPackageName("ggplot2") - clsPairThemesFunction.SetRCommand("theme") - clsPairThemesFunction.AddParameter("legend.position", Chr(34) & "none" & Chr(34), iPosition:=0) - - clsOperator.SetOperation("+") - clsOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) - clsStatSummaryHline.SetPackageName("ggplot2") clsStatSummaryHline.SetRCommand("stat_summary") clsStatSummaryHline.AddParameter("geom", Chr(34) & "hline" & Chr(34), iPosition:=2) @@ -496,9 +493,11 @@ Public Class dlgDescribeTwoVarGraph clsBaseOperator.AddParameter("ggplot", clsRFunctionParameter:=clsRGGplotFunction, iPosition:=0) clsBaseOperator.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorTwoVarGraph.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") - ucrBase.clsRsyntax.SetBaseRFunction(clsGGpairsFunction) + clsPairOperator.SetAssignTo("last_graph", strTempDataframe:=ucrSelectorTwoVarGraph.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempGraph:="last_graph") + + ucrBase.clsRsyntax.SetBaseROperator(clsPairOperator) + AddDataFrame() - ' bResetSubdialog = True End Sub Private Sub SetRCodeForControls(bReset As Boolean) @@ -509,7 +508,7 @@ Public Class dlgDescribeTwoVarGraph ucrReceiverSecondVar.AddAdditionalCodeParameterPair(clsAesCategoricalByNumericXNumeric, New RParameter("x", 0), iAdditionalPairNo:=4) ucrReceiverSecondVar.AddAdditionalCodeParameterPair(clsAesNumericByNumeric, New RParameter("x", 0), iAdditionalPairNo:=5) ucrReceiverSecondVar.AddAdditionalCodeParameterPair(clsAesStatSummaryHlineCategoricalByNumeric, New RParameter("y", 1), iAdditionalPairNo:=6) - ucrSaveGraph.AddAdditionalRCode(clsGGpairsFunction, bReset) + ucrSaveGraph.AddAdditionalRCode(clsPairOperator, bReset) ucrSelectorTwoVarGraph.SetRCode(clsRGGplotFunction, bReset) ucrReceiverSecondVar.SetRCode(clsAesCategoricalByCategoricalBarChart, bReset) @@ -546,12 +545,10 @@ Public Class dlgDescribeTwoVarGraph End Sub Private Sub TestOkEnabled() - If rdoBy.Checked AndAlso Not ucrReceiverFirstVars.IsEmpty AndAlso Not ucrReceiverSecondVar.IsEmpty AndAlso ucrSaveGraph.IsComplete Then - ucrBase.OKEnabled(True) - ElseIf rdoPairs.Checked AndAlso Not ucrReceiverFirstVars.IsEmpty Then - ucrBase.OKEnabled(True) + If rdoBy.Checked Then + ucrBase.OKEnabled(Not ucrReceiverFirstVars.IsEmpty AndAlso Not ucrReceiverSecondVar.IsEmpty AndAlso ucrSaveGraph.IsComplete) Else - ucrBase.OKEnabled(False) + ucrBase.OKEnabled(Not ucrReceiverFirstVars.IsEmpty AndAlso Not ucrReceiverColour.IsEmpty) End If End Sub @@ -824,7 +821,9 @@ Public Class dlgDescribeTwoVarGraph ChangeGeomToMosaicAndFacet() End Sub - Private Sub Controls_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrReceiverSecondVar.ControlContentsChanged, ucrReceiverFirstVars.ControlContentsChanged, ucrSaveGraph.ControlContentsChanged, ucrPnlByPairs.ControlContentsChanged + Private Sub Controls_ControlContentsChanged(ucrChangedControl As ucrCore) Handles ucrReceiverSecondVar.ControlContentsChanged, + ucrReceiverFirstVars.ControlContentsChanged, ucrSaveGraph.ControlContentsChanged, + ucrPnlByPairs.ControlContentsChanged, ucrReceiverColour.ControlContentsChanged TestOkEnabled() End Sub @@ -858,16 +857,15 @@ Public Class dlgDescribeTwoVarGraph sdgPlots.tbpFacet.Enabled = False sdgPlots.ShowDialog() sdgPlots.tbpFacet.Enabled = True - ' Readd as may get removed by subdialog clsRFacet.AddParameter("facets", "~variable", iPosition:=0) bResetSubdialog = False End Sub Private Sub cmdPairOptions_Click(sender As Object, e As EventArgs) Handles cmdPairOptions.Click - sdgPairPlotOptions.SetRCode(clsNewOperetor:=clsOperator, clsNewPairThemesFunction:=clsPairThemesFunction, clsNewGGpairAesFunction:=clsGGpairAesFunction, bReset = bResetSubdialog) + sdgPairPlotOptions.SetRCode(clsNewPairOperator:=clsPairOperator, clsNewPairThemesFunction:=clsPairThemesFunction, clsNewGGpairAesFunction:=clsGGpairsFunction, bReset:=bResetSubdialog) - bResetSubdialog = False sdgPairPlotOptions.ShowDialog() + bResetSubdialog = False End Sub Private Sub SetFreeYAxis() Dim clsScaleParam As RParameter @@ -918,7 +916,6 @@ Public Class dlgDescribeTwoVarGraph strXName = "x" strYName = "y" End If - If bAdd Then If clsRFacet.ContainsParameter("scales") Then clsScaleParam = clsRFacet.GetParameter("scales") @@ -985,7 +982,7 @@ Public Class dlgDescribeTwoVarGraph ucrBase.clsRsyntax.SetBaseROperator(clsBaseOperator) clsDummyFunction.AddParameter("checked", "by", iPosition:=0) Else - ucrBase.clsRsyntax.SetBaseRFunction(clsGGpairsFunction) + ucrBase.clsRsyntax.SetBaseROperator(clsPairOperator) clsDummyFunction.AddParameter("checked", "pair", iPosition:=0) End If End If diff --git a/instat/sdgPairPlotOptions.Designer.vb b/instat/sdgPairPlotOptions.Designer.vb index b1d2ae2ffbc..31cf26d0867 100644 --- a/instat/sdgPairPlotOptions.Designer.vb +++ b/instat/sdgPairPlotOptions.Designer.vb @@ -23,11 +23,11 @@ Partial Class sdgPairPlotOptions _ Private Sub InitializeComponent() Me.tpLegend = New System.Windows.Forms.TabPage() + Me.tbInventory = New System.Windows.Forms.TabControl() + Me.ucrButtonsInventoryplot = New instat.ucrButtonsSubdialogue() Me.ucrChkShowLegend = New instat.ucrCheck() Me.ucrInputLegendPosition = New instat.ucrInputComboBox() Me.ucrChkLegendPosition = New instat.ucrCheck() - Me.tbInventory = New System.Windows.Forms.TabControl() - Me.ucrButtonsInventoryplot = New instat.ucrButtonsSubdialogue() Me.tpLegend.SuspendLayout() Me.tbInventory.SuspendLayout() Me.SuspendLayout() @@ -40,16 +40,33 @@ Partial Class sdgPairPlotOptions Me.tpLegend.Location = New System.Drawing.Point(4, 22) Me.tpLegend.Name = "tpLegend" Me.tpLegend.Padding = New System.Windows.Forms.Padding(3) - Me.tpLegend.Size = New System.Drawing.Size(320, 171) + Me.tpLegend.Size = New System.Drawing.Size(299, 62) Me.tpLegend.TabIndex = 3 Me.tpLegend.Text = "Legend" Me.tpLegend.UseVisualStyleBackColor = True ' + 'tbInventory + ' + Me.tbInventory.Controls.Add(Me.tpLegend) + Me.tbInventory.Location = New System.Drawing.Point(3, 0) + Me.tbInventory.Name = "tbInventory" + Me.tbInventory.SelectedIndex = 0 + Me.tbInventory.Size = New System.Drawing.Size(307, 88) + Me.tbInventory.TabIndex = 2 + ' + 'ucrButtonsInventoryplot + ' + Me.ucrButtonsInventoryplot.AutoSize = True + Me.ucrButtonsInventoryplot.Location = New System.Drawing.Point(46, 94) + Me.ucrButtonsInventoryplot.Name = "ucrButtonsInventoryplot" + Me.ucrButtonsInventoryplot.Size = New System.Drawing.Size(224, 30) + Me.ucrButtonsInventoryplot.TabIndex = 4 + ' 'ucrChkShowLegend ' Me.ucrChkShowLegend.AutoSize = True Me.ucrChkShowLegend.Checked = False - Me.ucrChkShowLegend.Location = New System.Drawing.Point(12, 18) + Me.ucrChkShowLegend.Location = New System.Drawing.Point(7, 5) Me.ucrChkShowLegend.Name = "ucrChkShowLegend" Me.ucrChkShowLegend.Size = New System.Drawing.Size(204, 23) Me.ucrChkShowLegend.TabIndex = 2 @@ -60,42 +77,25 @@ Partial Class sdgPairPlotOptions Me.ucrInputLegendPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.ucrInputLegendPosition.GetSetSelectedIndex = -1 Me.ucrInputLegendPosition.IsReadOnly = False - Me.ucrInputLegendPosition.Location = New System.Drawing.Point(156, 56) + Me.ucrInputLegendPosition.Location = New System.Drawing.Point(154, 33) Me.ucrInputLegendPosition.Name = "ucrInputLegendPosition" - Me.ucrInputLegendPosition.Size = New System.Drawing.Size(137, 21) + Me.ucrInputLegendPosition.Size = New System.Drawing.Size(134, 25) Me.ucrInputLegendPosition.TabIndex = 1 ' 'ucrChkLegendPosition ' Me.ucrChkLegendPosition.AutoSize = True Me.ucrChkLegendPosition.Checked = False - Me.ucrChkLegendPosition.Location = New System.Drawing.Point(12, 58) + Me.ucrChkLegendPosition.Location = New System.Drawing.Point(7, 35) Me.ucrChkLegendPosition.Name = "ucrChkLegendPosition" Me.ucrChkLegendPosition.Size = New System.Drawing.Size(204, 23) Me.ucrChkLegendPosition.TabIndex = 0 ' - 'tbInventory - ' - Me.tbInventory.Controls.Add(Me.tpLegend) - Me.tbInventory.Location = New System.Drawing.Point(3, 0) - Me.tbInventory.Name = "tbInventory" - Me.tbInventory.SelectedIndex = 0 - Me.tbInventory.Size = New System.Drawing.Size(328, 197) - Me.tbInventory.TabIndex = 2 - ' - 'ucrButtonsInventoryplot - ' - Me.ucrButtonsInventoryplot.AutoSize = True - Me.ucrButtonsInventoryplot.Location = New System.Drawing.Point(49, 199) - Me.ucrButtonsInventoryplot.Name = "ucrButtonsInventoryplot" - Me.ucrButtonsInventoryplot.Size = New System.Drawing.Size(224, 30) - Me.ucrButtonsInventoryplot.TabIndex = 4 - ' 'sdgPairPlotOptions ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(347, 237) + Me.ClientSize = New System.Drawing.Size(314, 128) Me.Controls.Add(Me.ucrButtonsInventoryplot) Me.Controls.Add(Me.tbInventory) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow diff --git a/instat/sdgPairPlotOptions.vb b/instat/sdgPairPlotOptions.vb index 47daa8ff5c8..f179e8217d1 100644 --- a/instat/sdgPairPlotOptions.vb +++ b/instat/sdgPairPlotOptions.vb @@ -17,9 +17,10 @@ Imports instat Imports instat.Translations Public Class sdgPairPlotOptions - Public clsOperator As New ROperator - Public clsPairThemesFunction, clsGGpairAesFunction As New RFunction + Public clsPairOperator As New ROperator + Public clsPairThemesFunction, clsGGpairsFunction As New RFunction Private bControlsInitialised As Boolean = False + Private Sub sdgPairPlotOptions_Load(sender As Object, e As EventArgs) Handles MyBase.Load autoTranslate(Me) End Sub @@ -43,45 +44,37 @@ Public Class sdgPairPlotOptions ucrChkLegendPosition.AddParameterPresentCondition(True, "legend_position") ucrChkLegendPosition.AddParameterPresentCondition(False, "legend_position", False) + bControlsInitialised = True End Sub - Public Sub SetRCode(clsNewOperetor As ROperator, clsNewPairThemesFunction As RFunction, clsNewGGpairAesFunction As RFunction, Optional bReset As Boolean = False) + Public Sub SetRCode(clsNewPairOperator As ROperator, clsNewPairThemesFunction As RFunction, clsNewGGpairAesFunction As RFunction, Optional bReset As Boolean = False) + clsPairOperator = clsNewPairOperator + clsPairThemesFunction = clsNewPairThemesFunction + clsGGpairsFunction = clsNewGGpairAesFunction + If Not bControlsInitialised Then InitialiseControls() End If - - clsOperator = clsNewOperetor - clsPairThemesFunction = clsNewPairThemesFunction - clsGGpairAesFunction = clsNewGGpairAesFunction - - - ucrChkLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) - ucrInputLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) - ucrChkShowLegend.SetRCode(clsGGpairAesFunction, bReset, bCloneIfNeeded:=True) - + If bReset Then + ucrChkShowLegend.SetRCode(clsGGpairsFunction, bReset, bCloneIfNeeded:=True) + ucrChkLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) + ucrInputLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) + End If End Sub - 'Private Sub AddRemoveTheme() - ' 'If clsThemeFunction.iParameterCount > 0 Then - ' ' clsBaseOperator.AddParameter("theme", clsRFunctionParameter:=clsThemeFunction, iPosition:=15) - ' 'Else - ' ' clsBaseOperator.RemoveParameterByName("theme") - ' 'End If - 'End Sub + Private Sub ucrChkLegendPosition_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkLegendPosition.ControlValueChanged, ucrInputLegendPosition.ControlValueChanged If ucrChkLegendPosition.Checked Then - clsOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) - + clsPairOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) Else - clsOperator.RemoveParameterByName("right") + clsPairOperator.RemoveParameterByName("right") End If - End Sub Private Sub ucrChkShowLegend_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkShowLegend.ControlValueChanged If ucrChkShowLegend.Checked Then - clsGGpairAesFunction.AddParameter("legend", 1, iPosition:=2) + clsGGpairsFunction.AddParameter("legend", 1, iPosition:=2) Else - clsGGpairAesFunction.RemoveParameterByName("legend") + clsGGpairsFunction.RemoveParameterByName("legend") End If End Sub End Class \ No newline at end of file From 35f0c682cfaaeb768700dd2c41b141d413aead7e Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 5 Dec 2022 21:29:55 +0000 Subject: [PATCH 33/88] updated yml to include all R packages --- .github/workflows/CreateInstaller.yml | 90 ++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 16f14dc7b46..ac0c78f9b52 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -158,8 +158,94 @@ jobs: - name: Install R packages (64 bit) run: | - "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - shell: cmd + Sys.setenv(TZ='GMT') + install.packages("http://cran.r-project.org/src/contrib/Archive/signmedian.test/signmedian.test_1.5.1.tar.gz", repos=NULL, type="source") + packs <- c("abind", "agricolae", "agridat", "AlgDesign", "animation", + "anytime", "arrangements", "ash", "askpass", "assertthat", "automap", + "backports", "base64enc", "bayestestR", "BH", "bit", "bit64", + "bitops", "boot", "brew", "brio", "broom", "bslib", "ca", "cachem", + "callr", "candisc", "car", "carData", "caret", "cellranger", + "changepoint", "checkmate", "chillR", "chron", "circlize", "CircStats", + "circular", "class", "classInt", "cli", "clifro", "climdex.pcic", + "clipr", "clock", "clue", "cluster", "cmsaf", "cmsafops", "cmsafvis", + "codetools", "coin", "colorRamps", "colorspace", "colourpicker", + "combinat", "commonmark", "confintr", "corrplot", "corrr", "countrycode", + "cowplot", "cpp11", "crayon", "credentials", "crosstalk", "curl", + "DAAG", "dae", "data.table", "datawizard", "date", "DBI", "deldir", + "dendextend", "DEoptimR", "desc", "DescTools", "devtools", "diffobj", + "digest", "distillery", "dotCall64", "downlit", "dplyr", "dslabs", + "DT", "e1071", "ecmwfr", "effectsize", "ellipse", "ellipsis", + "emmeans", "EnvStats", "estimability", "evaluate", "Evapotranspiration", + "Exact", "exactRankTests", "expm", "extraDistr", "extrafont", + "extrafontdb", "extRemes", "factoextra", "FactoMineR", "fansi", + "faraway", "farver", "fastDummies", "fastmap", "fields", "filelock", + "fitdistrplus", "flashClust", "FNN", "fontawesome", "forcats", + "foreach", "forecast", "foreign", "formula.tools", "Formula", + "fracdiff", "fs", "future.apply", "future", "gapminder", "gclus", + "gcookbook", "generics", "GenSA", "geosphere", "gert", "getPass", + "GGally", "ggalt", "ggdendro", "ggeffects", "ggfittext", "ggforce", + "ggformula", "ggfortify", "ggmosaic", "ggplot2", "ggplotify", + "ggpmisc", "ggpp", "ggpubr", "ggrepel", "ggridges", "ggsci", + "ggsignif", "ggstance", "ggtext", "ggthemes", "ggwordcloud", + "gh", "gitcreds", "gld", "GlobalOptions", "globals", "glue", + "gmp", "gnm", "goftest", "gower", "gridExtra", "gridGraphics", + "gridtext", "gstat", "gtable", "hardhat", "haven", "heplots", + "hexbin", "highr", "HistData", "Hmisc", "hms", "htmlTable", "htmltools", + "htmlwidgets", "httpuv", "httr", "hunspell", "hydroGOF", "hydroTSM", + "imputeTS", "ini", "insight", "interp", "intervals", "ipred", + "isoband", "iterators", "janeaustenr", "janitor", "jpeg", "jquerylib", + "jsonlite", "Kendall", "KernSmooth", "keyring", "klaR", "knitr", + "labeling", "labelled", "Lahman", "later", "lattice", "latticeExtra", + "lava", "lazyeval", "leaflet.providers", "leaflet", "leaps", + "lemon", "libcoin", "lifecycle", "listenv", "lme4", "lmodel2", + "lmom", "lmomco", "Lmoments", "lmtest", "lubridate", "lwgeom", + "magick", "magrittr", "mapdata", "mapproj", "maps", "maptools", + "markdown", "MASS", "Matrix", "MatrixModels", "matrixStats", + "mc2d", "memoise", "metR", "mgcv", "mime", "miniUI", "minqa", + "MKdescr", "MKinfer", "mlbench", "ModelMetrics", "modelr", "modeltools", + "mosaic", "mosaicCore", "mosaicData", "multcomp", "multcompView", + "munsell", "mvtnorm", "ncdf4.helpers", "ncdf4", "nlme", "nloptr", + "nnet", "nortest", "numDeriv", "nycflights13", "openair", "openssl", + "openxlsx", "operator.tools", "parallelly", "parameters", "patchwork", + "pbkrtest", "pbs", "PCICt", "performance", "pillar", "pingr", + "pkgbuild", "pkgconfig", "pkgdown", "pkgload", "plotly", "plotrix", + "pls", "plyr", "png", "polyclip", "polynom", "praise", "prettyunits", + "pROC", "processx", "prodlim", "productplots", "profvis", "progress", + "progressr", "proj4", "promises", "proxy", "ps", "purrr", "qap", + "quadprog", "quantmod", "quantreg", "questionr", "qvcalc", "R.cache", + "R.methodsS3", "R.oo", "R.utils", "R6", "ragg", "rainfarmr", + "rappdirs", "raster", "rasterVis", "rbibutils", "rcmdcheck", + "RColorBrewer", "rcorpora", "Rcpp", "RcppArmadillo", "RcppEigen", + "RcppRoll", "RCurl", "Rdpack", "readODS", "readr", "readxl", + "recipes", "registry", "relimp", "rematch", "rematch2", "remotes", + "repr", "reshape", "reshape2", "rgdal", "rio", "rje", "rlang", + "rmarkdown", "RMAWGEN", "RMySQL", "robustbase", "rootSolve", + "roxygen2", "rpart", "rpivotTable", "rprojroot", "rrefine", "rstatix", + "rstudioapi", "rtf", "Rttf2pt1", "rversions", "rvest", "rworldmap", + "rworldxtra", "s2", "sandwich", "sass", "scales", "scatterplot3d", + "SearchTrees", "selectr", "seriation", "sessioninfo", "sf", "sftime", + "shades", "shape", "shiny", "shinyFiles", "shinyjs", "shinythemes", + "shinyWidgets", "signmedian.test", "sjlabelled", "sjmisc", "sjPlot", + "sjstats", "skimr", "snakecase", "SnowballC", "sodium", "sourcetools", + "sp", "spacetime", "spam", "SparseM", "SPEI", "splines2", "splus2R", + "SQUAREM", "stars", "statip", "stinepack", "stringdist", "stringi", + "stringr", "strucchange", "styler", "survival", "svglite", "sys", + "systemfonts", "terra", "testthat", "texmex", "textshaping", + "TH.data", "tibble", "tidyr", "tidyselect", "tidytext", "timechange", + "timeDate", "tinytex", "tokenizers", "treemapify", "trend", "tseries", + "TSP", "TTR", "tweenr", "tzdb", "units", "urca", "urlchecker", + "usethis", "utf8", "vars", "vcd", "vcdExtra", "vctrs", "viridis", + "viridisLite", "visdat", "visreg", "vroom", "wakefield", "waldo", + "weathermetrics", "whisker", "withr", "wk", "xfun", "XML", "xml2", + "xopen", "xtable", "xts", "yaml", "yulab.utils", "zip", "zoo", + "zyp") + + install.packages(packs, dependencies = FALSE,repos='https://cloud.r-project.org', type="both") + devtools::install_github("ianmoran11/mmtable2") + shell: Rscript {0} + # run: | + # "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + # shell: cmd #- name: Install R packages (32 bit) # run: | From 14c49b38a02943b3887a266d5f5989bbeee372da Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Tue, 6 Dec 2022 07:38:07 +0300 Subject: [PATCH 34/88] minor code change --- instat/Interface/IGrid.vb | 2 +- instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb | 2 +- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 10 +++++----- instat/ucrColumnMetadata.vb | 2 ++ instat/ucrDataView.vb | 7 +++---- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/instat/Interface/IGrid.vb b/instat/Interface/IGrid.vb index c327cacad69..f8f88a79da3 100644 --- a/instat/Interface/IGrid.vb +++ b/instat/Interface/IGrid.vb @@ -44,7 +44,7 @@ Public Interface IGrid Sub UpdateAllWorksheetStyles() - Sub ReOrderWorksheets() + Sub ReOrderWorksheets(strCurrWorksheet As String) Sub UpdateWorksheetStyle(worksheet As clsWorksheetAdapter) End Interface diff --git a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb index 245fa1234f2..fcdf4ff6247 100644 --- a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb +++ b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb @@ -82,7 +82,7 @@ Public MustInherit Class ucrLinuxGrid Return New clsWorksheetAdapter(tab) End Function - Private Sub ReOrderWorksheets() Implements IGrid.ReOrderWorksheets + Private Sub ReOrderWorksheets(strCurrWorksheet As String) Implements IGrid.ReOrderWorksheets 'assuming the databook will always have all the data frames 'and the grid may not have all the data frame worksheets equivalent 'and all data frames in the data book have changed their order positions diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 0d451d6bd81..54703c29df9 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -71,7 +71,7 @@ Public MustInherit Class ucrReoGrid Return New clsWorksheetAdapter(fillWorkSheet) End Function - Private Sub ReOrderWorksheets() Implements IGrid.ReOrderWorksheets + Private Sub ReOrderWorksheets(strCurrWorksheet As String) Implements IGrid.ReOrderWorksheets 'assuming the databook will always have all the data frames 'and the grid may not have all the data frame worksheets equivalent 'and all data frames in the data book have changed their order positions @@ -85,15 +85,15 @@ Public MustInherit Class ucrReoGrid End If Next - Dim bReorder As Boolean = If(lstWorkSheetsFound.Count > 1, _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). - SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()), True) - If Not bReorder Then + If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). + SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()) Then 'reorder the worksheets based on the filled list For i As Integer = 0 To lstWorkSheetsFound.Count - 1 grdData.MoveWorksheet(lstWorkSheetsFound(i), i) - grdData.CurrentWorksheet = lstWorkSheetsFound(i) + 'grdData.CurrentWorksheet = lstWorkSheetsFound(i) Next + grdData.CurrentWorksheet = grdData.GetWorksheetByName(strCurrWorksheet) End If End Sub diff --git a/instat/ucrColumnMetadata.vb b/instat/ucrColumnMetadata.vb index 13577fc4dcf..a6e0312950c 100644 --- a/instat/ucrColumnMetadata.vb +++ b/instat/ucrColumnMetadata.vb @@ -63,6 +63,7 @@ Public Class ucrColumnMetadata Private Sub AddAndUpdateWorksheets() Dim firstAddedWorksheet As clsWorksheetAdapter = Nothing + Dim strCurrWorksheet As String = If(_grid.CurrentWorksheet Is Nothing, Nothing, _grid.CurrentWorksheet.Name) For Each clsDataFrame In _clsDataBook.DataFrames Dim worksheet As clsWorksheetAdapter = _grid.GetWorksheet(clsDataFrame.strName) If worksheet Is Nothing Then @@ -73,6 +74,7 @@ Public Class ucrColumnMetadata End If RefreshWorksheet(worksheet, clsDataFrame) Next + _grid.ReOrderWorksheets(strCurrWorksheet) If firstAddedWorksheet IsNot Nothing Then _grid.CurrentWorksheet = firstAddedWorksheet End If diff --git a/instat/ucrDataView.vb b/instat/ucrDataView.vb index 9ce931bbf0c..233342b5534 100644 --- a/instat/ucrDataView.vb +++ b/instat/ucrDataView.vb @@ -118,6 +118,7 @@ Public Class ucrDataView Private Sub AddAndUpdateWorksheets() Dim firstAddedWorksheet As clsWorksheetAdapter = Nothing + Dim strCurrWorksheet As String = GetCurrentDataFrameNameFocus() For Each clsDataFrame In _clsDataBook.DataFrames Dim worksheet As clsWorksheetAdapter = _grid.GetWorksheet(clsDataFrame.strName) If worksheet Is Nothing Then @@ -128,6 +129,7 @@ Public Class ucrDataView End If RefreshWorksheet(worksheet, clsDataFrame) Next + _grid.ReOrderWorksheets(strCurrWorksheet) If firstAddedWorksheet IsNot Nothing Then _grid.CurrentWorksheet = firstAddedWorksheet End If @@ -139,7 +141,6 @@ Public Class ucrDataView End If _clsDataBook.RefreshData() AddAndUpdateWorksheets() - _grid.ReOrderWorksheets() _grid.RemoveOldWorksheets() If _clsDataBook.DataFrames.Count = 0 Then RefreshDisplayInformation() @@ -231,9 +232,7 @@ Public Class ucrDataView End Sub Public Sub CurrentWorksheetChanged() - If GetWorkSheetCount() <> 0 Then - frmMain.ucrColumnMeta.SetCurrentDataFrame(_grid.CurrentWorksheet.Name) - End If + frmMain.ucrColumnMeta.SetCurrentDataFrame(GetCurrentDataFrameNameFocus()) RefreshDisplayInformation() End Sub From fbe3e0567f02bb23626ad04ffcb1cc72ee4658cd Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Tue, 6 Dec 2022 08:26:56 +0300 Subject: [PATCH 35/88] maintain selected sheet before reodering for Linux --- instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb | 5 ++++- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb index fcdf4ff6247..7f0e4cea946 100644 --- a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb +++ b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb @@ -95,12 +95,15 @@ Public MustInherit Class ucrLinuxGrid lstWorkSheetsFound.Add(fillWorkSheet) End If Next - If lstWorkSheetsFound.Count > 1 Then + + If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). + SequenceEqual(tcTabs.Controls.OfType(Of TabPage).Select(Function(x) x.Text).ToList) Then 'reorder the worksheets based on the filled list For i As Integer = 0 To lstWorkSheetsFound.Count - 1 tcTabs.TabPages.Remove(lstWorkSheetsFound(i)) tcTabs.TabPages.Insert(i, lstWorkSheetsFound(i)) Next + tcTabs.SelectedTab = GetTabPage(strCurrWorksheet) End If End Sub diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 54703c29df9..90f4c95f1bc 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -85,7 +85,6 @@ Public MustInherit Class ucrReoGrid End If Next - If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()) Then 'reorder the worksheets based on the filled list From e2ba586c7882241dde27c0c5e5a860a7ca5ecd03 Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Tue, 6 Dec 2022 08:35:52 +0300 Subject: [PATCH 36/88] removed commented code --- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 1 - 1 file changed, 1 deletion(-) diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 90f4c95f1bc..2ad01edff4a 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -90,7 +90,6 @@ Public MustInherit Class ucrReoGrid 'reorder the worksheets based on the filled list For i As Integer = 0 To lstWorkSheetsFound.Count - 1 grdData.MoveWorksheet(lstWorkSheetsFound(i), i) - 'grdData.CurrentWorksheet = lstWorkSheetsFound(i) Next grdData.CurrentWorksheet = grdData.GetWorksheetByName(strCurrWorksheet) End If From 3a4acf121485c53b8527e2ba3e91233360315467 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Tue, 6 Dec 2022 11:40:47 +0300 Subject: [PATCH 37/88] Summary table refactoring --- instat/clsRCodeStructure.vb | 38 ++++++++++++++++++++++++++++++------- instat/dlgSummaryTables.vb | 10 ++-------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/instat/clsRCodeStructure.vb b/instat/clsRCodeStructure.vb index 0e695fc91f6..1596c441a40 100644 --- a/instat/clsRCodeStructure.vb +++ b/instat/clsRCodeStructure.vb @@ -175,13 +175,6 @@ Public Class RCodeStructure ' bExcludeAssignedFunctionOutput which it uses for the base code. Eventually migrate these out of RSyntax. End Sub - Public Function GetRObjectToAssignTo() As String - Return _strAssignToObject - End Function - - Public Function IsAssigned() - Return Not String.IsNullOrEmpty(_strAssignToObject) - End Function '''-------------------------------------------------------------------------------------------- ''' Deprecated. @@ -294,6 +287,37 @@ Public Class RCodeStructure End Sub + + Public Function GetRObjectToAssignTo() As String + Return _strAssignToObject + End Function + + Public Function IsAssigned() + Return Not String.IsNullOrEmpty(_strAssignToObject) + End Function + + ''' + ''' Sets the assign to variable for objects that will not be added in the data book and displayed in the output viewer. + ''' For instance objects used as input parameters for other R funtions + ''' + ''' The new value for the R object assignment string + Public Sub SetAssignToObject(strRObjectToAssignTo As String) + Me._strAssignToObject = strRObjectToAssignTo + Me._strAssignToObjectTypeLabel = "" + Me._strAssignToObjectFormat = "" + Me._strDataFrameNameToAddAssignToObject = "" + Me._strAssignToName = "" + End Sub + + ''' + ''' Sets the assign to variables for objects that will be added to the databook and possibly displayed in the output viewer. + ''' To prevent the object from being diplayed in the output viewer, set bExcludeAssignedFunctionOutput = False. + ''' + ''' The new value for the R object assignment string + ''' The new value for the object type label + ''' The new value for the object format + ''' The new value for the data frame name that the object will be added to. + ''' The new value for the object name Public Sub SetAssignToOutputObject(strRObjectToAssignTo As String, strRObjectTypeLabelToAssignTo As String, strRObjectFormatToAssignTo As String, diff --git a/instat/dlgSummaryTables.vb b/instat/dlgSummaryTables.vb index d96cdf3003d..323e7079d8d 100644 --- a/instat/dlgSummaryTables.vb +++ b/instat/dlgSummaryTables.vb @@ -322,13 +322,13 @@ Public Class dlgSummaryTables clsSummaryDefaultFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$summary_table") clsSummaryDefaultFunction.AddParameter("treat_columns_as_factor", "FALSE", iPosition:=8) clsSummaryDefaultFunction.AddParameter("summaries", clsRFunctionParameter:=clsSummariesList, iPosition:=12) - clsSummaryDefaultFunction.SetAssignTo("summary_table") + clsSummaryDefaultFunction.SetAssignToObject("summary_table") clsFrequencyDefaultFunction.SetRCommand(frmMain.clsRLink.strInstatDataObject & "$summary_table") clsFrequencyDefaultFunction.AddParameter("store_results", "FALSE", iPosition:=2) clsFrequencyDefaultFunction.AddParameter("treat_columns_as_factor", "FALSE", iPosition:=10) clsFrequencyDefaultFunction.AddParameter("summaries", "count_label", iPosition:=11) - clsFrequencyDefaultFunction.SetAssignTo("frequency_table") + clsFrequencyDefaultFunction.SetAssignToObject("frequency_table") clsTableTitleFunction.SetPackageName("gt") clsTableTitleFunction.SetRCommand("tab_header") @@ -384,9 +384,7 @@ Public Class dlgSummaryTables clsStyleListFunction.SetRCommand("list") - ucrBase.clsRsyntax.AddToBeforeCodes(clsFrequencyDefaultFunction, iPosition:=0) ucrBase.clsRsyntax.SetBaseROperator(clsJoiningPipeOperator) - clsJoiningPipeOperator.SetAssignToOutputObject(strRObjectToAssignTo:="last_table", strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Table, strRObjectFormatToAssignTo:=RObjectFormat.Html, @@ -617,15 +615,11 @@ Public Class dlgSummaryTables clsDummyFunction.AddParameter("rdo_checked", "rdoSummary", iPosition:=10) clsMutableFunction.AddParameter("data", clsRFunctionParameter:=clsSummaryDefaultFunction, iPosition:=0) clsJoiningPipeOperator.AddParameter("mutable", clsROperatorParameter:=clsSummaryOperator, iPosition:=0) - ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsFrequencyDefaultFunction) - ucrBase.clsRsyntax.AddToBeforeCodes(clsSummaryDefaultFunction, iPosition:=0) ucrSaveTable.SetPrefix("summary_table") Else clsDummyFunction.AddParameter("rdo_checked", "rdoFrequency", iPosition:=10) clsMutableFunction.AddParameter("data", clsRFunctionParameter:=clsFrequencyDefaultFunction, iPosition:=0) clsJoiningPipeOperator.AddParameter("mutable", clsROperatorParameter:=clsFrequencyOperator, iPosition:=0) - ucrBase.clsRsyntax.RemoveFromBeforeCodes(clsSummaryDefaultFunction) - ucrBase.clsRsyntax.AddToBeforeCodes(clsFrequencyDefaultFunction, iPosition:=0) ucrSaveTable.SetPrefix("frequency_table") End If End Sub From fe2394f701febd9c7a814df2669599aefdf9d857 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Tue, 6 Dec 2022 09:10:22 +0000 Subject: [PATCH 38/88] Added Github token --- .github/workflows/CreateInstaller.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index ac0c78f9b52..2f3496d0df4 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -31,7 +31,8 @@ jobs: env: Solution_Name: Instat.sln # Replace with your solution name, i.e. MyWpfApp.sln. Test_Project_Path: instat\instat.vbproj # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj. - + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + # check out r-instat steps: - name: Checkout From 0fca499345f45efaaffacaa4ebe0372bdcb546ac Mon Sep 17 00:00:00 2001 From: Sophie Date: Tue, 6 Dec 2022 10:38:17 +0100 Subject: [PATCH 39/88] Minor code modification --- instat/dlgDescribeTwoVarGraph.vb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index 912b64e5338..afc8cb8d94d 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -333,7 +333,6 @@ Public Class dlgDescribeTwoVarGraph ucrSaveGraph.Reset() ucrSelectorTwoVarGraph.Reset() - 'cmdOptions.Enabled = False ucrReceiverFirstVars.SetMeAsReceiver() clsDummyFunction.AddParameter("checked", "pair", iPosition:=0) @@ -969,12 +968,12 @@ Public Class dlgDescribeTwoVarGraph ucrReceiverFirstVars.ucrMultipleVariables.Clear() ucrReceiverFirstVars.SetMeAsReceiver() If rdoBy.Checked Then - cmdOptions.Enabled = True - cmdPairOptions.Enabled = False + cmdOptions.Visible = True + cmdPairOptions.Visible = False ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(True, bIsCategoricalNumeric:=True) Else - cmdOptions.Enabled = False - cmdPairOptions.Enabled = True + cmdOptions.Visible = False + cmdPairOptions.Visible = True ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(False) End If If bRCodeSet Then From e58555533c99fc76fba9a6ffd69f16ca00f0ab92 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Tue, 6 Dec 2022 12:43:32 +0300 Subject: [PATCH 40/88] comment added --- instat/clsRCodeStructure.vb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/instat/clsRCodeStructure.vb b/instat/clsRCodeStructure.vb index 1596c441a40..26ba9545ee8 100644 --- a/instat/clsRCodeStructure.vb +++ b/instat/clsRCodeStructure.vb @@ -288,6 +288,10 @@ Public Class RCodeStructure End Sub + ''' + ''' Gets the assign to variable + ''' + ''' assign to value Public Function GetRObjectToAssignTo() As String Return _strAssignToObject End Function @@ -311,7 +315,8 @@ Public Class RCodeStructure ''' ''' Sets the assign to variables for objects that will be added to the databook and possibly displayed in the output viewer. - ''' To prevent the object from being diplayed in the output viewer, set bExcludeAssignedFunctionOutput = False. + ''' To prevent the object from being diplayed in the output viewer, + ''' set bExcludeAssignedFunctionOutput = False (Not recommended, use the SetAssignToObject subroutine to get similar functionality). ''' ''' The new value for the R object assignment string ''' The new value for the object type label From c8782659d41eeec70f947b8292172b2e6f7cb1bd Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Tue, 6 Dec 2022 13:48:05 +0300 Subject: [PATCH 41/88] added summary and minor code change --- instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb | 5 ++++- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 5 ++++- instat/ucrColumnMetadata.vb | 4 +++- instat/ucrDataView.vb | 4 +++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb index 7f0e4cea946..bd84c0bd62d 100644 --- a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb +++ b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb @@ -96,6 +96,9 @@ Public MustInherit Class ucrLinuxGrid End If Next + 'in the second condition we check if all data frames in the data book + 'have the same order positions with all data frame sheets in the grid + 'if not this check will return False which means the data frames in the data book are reordeder If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). SequenceEqual(tcTabs.Controls.OfType(Of TabPage).Select(Function(x) x.Text).ToList) Then 'reorder the worksheets based on the filled list @@ -103,7 +106,7 @@ Public MustInherit Class ucrLinuxGrid tcTabs.TabPages.Remove(lstWorkSheetsFound(i)) tcTabs.TabPages.Insert(i, lstWorkSheetsFound(i)) Next - tcTabs.SelectedTab = GetTabPage(strCurrWorksheet) + tcTabs.SelectedTab = GetTabPage(strCurrWorksheet) 'set the selected sheet back active before reordering End If End Sub diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 2ad01edff4a..59394cc940f 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -85,13 +85,16 @@ Public MustInherit Class ucrReoGrid End If Next + 'in the second condition we check if all data frames in the data book + 'have the same order positions with all data frame sheets in the grid + 'if not this check will return False which means the data frames in the data book are reordeder If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()) Then 'reorder the worksheets based on the filled list For i As Integer = 0 To lstWorkSheetsFound.Count - 1 grdData.MoveWorksheet(lstWorkSheetsFound(i), i) Next - grdData.CurrentWorksheet = grdData.GetWorksheetByName(strCurrWorksheet) + grdData.CurrentWorksheet = grdData.GetWorksheetByName(strCurrWorksheet) 'set the selected sheet back active before reordering End If End Sub diff --git a/instat/ucrColumnMetadata.vb b/instat/ucrColumnMetadata.vb index a6e0312950c..c56717bbd3b 100644 --- a/instat/ucrColumnMetadata.vb +++ b/instat/ucrColumnMetadata.vb @@ -74,7 +74,9 @@ Public Class ucrColumnMetadata End If RefreshWorksheet(worksheet, clsDataFrame) Next - _grid.ReOrderWorksheets(strCurrWorksheet) + If strCurrWorksheet IsNot Nothing Then + _grid.ReOrderWorksheets(strCurrWorksheet) + End If If firstAddedWorksheet IsNot Nothing Then _grid.CurrentWorksheet = firstAddedWorksheet End If diff --git a/instat/ucrDataView.vb b/instat/ucrDataView.vb index 233342b5534..695fca53b36 100644 --- a/instat/ucrDataView.vb +++ b/instat/ucrDataView.vb @@ -129,7 +129,9 @@ Public Class ucrDataView End If RefreshWorksheet(worksheet, clsDataFrame) Next - _grid.ReOrderWorksheets(strCurrWorksheet) + If strCurrWorksheet IsNot Nothing Then + _grid.ReOrderWorksheets(strCurrWorksheet) + End If If firstAddedWorksheet IsNot Nothing Then _grid.CurrentWorksheet = firstAddedWorksheet End If From e6553079a39ff9a8eefdd6bf65de8ca086d0b41d Mon Sep 17 00:00:00 2001 From: patowhiz Date: Tue, 6 Dec 2022 17:07:41 +0300 Subject: [PATCH 42/88] Three variable frequencies and outputs improvements --- instat/dlgThreeVariableFrequencies.vb | 44 ++++++------ .../static/InstatObject/R/instat_object_R6.R | 69 ++++++++----------- .../InstatObject/R/stand_alone_functions.R | 61 +++++++++++----- 3 files changed, 93 insertions(+), 81 deletions(-) diff --git a/instat/dlgThreeVariableFrequencies.vb b/instat/dlgThreeVariableFrequencies.vb index d36f24ada89..49cfcf5e814 100644 --- a/instat/dlgThreeVariableFrequencies.vb +++ b/instat/dlgThreeVariableFrequencies.vb @@ -176,17 +176,18 @@ Public Class dlgThreeVariableFrequencies clsTableBaseOperator.AddParameter("select", clsRFunctionParameter:=clsSelectFunction, iPosition:=2) clsTableBaseOperator.AddParameter("arrange", clsRFunctionParameter:=clsArrangeFunction, iPosition:=3) clsTableBaseOperator.AddParameter("sjtab", clsRFunctionParameter:=clsSjTabFunction, iPosition:=4) - clsTableBaseOperator.SetAssignToOutputObject("last_table", - RObjectTypeLabel.Table, - RObjectFormat.Html, - ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, - "last_table") + clsTableBaseOperator.SetAssignToOutputObject(strRObjectToAssignTo:="last_table", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Table, + strRObjectFormatToAssignTo:=RObjectFormat.Html, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, + strObjectName:="last_table") clsGraphBaseOperator.SetOperation("%>%") + 'iPosition should follow in the folowing order for this operator clsGraphBaseOperator.AddParameter("group_by", clsRFunctionParameter:=clsGroupByFunction, iPosition:=1) clsGraphBaseOperator.AddParameter("select", clsRFunctionParameter:=clsSelectFunction, iPosition:=2) clsGraphBaseOperator.AddParameter("arrange", clsRFunctionParameter:=clsArrangeFunction, iPosition:=3) - clsGraphBaseOperator.AddParameter("sjplot", clsRFunctionParameter:=clsSjPlotFunction, iPosition:=3) + clsGraphBaseOperator.AddParameter("sjplot", clsRFunctionParameter:=clsSjPlotFunction, iPosition:=4) clsGroupByFunction.SetPackageName("dplyr") clsGroupByFunction.SetRCommand("group_by") @@ -212,11 +213,11 @@ Public Class dlgThreeVariableFrequencies clsGridArrangeFunction.SetRCommand("grid.arrange") clsGridArrangeFunction.AddParameter("grobs", clsROperatorParameter:=clsGraphBaseOperator) - clsGridArrangeFunction.SetAssignToOutputObject("last_graph", - RObjectTypeLabel.Graph, - RObjectFormat.Image, - ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, - "last_graph") + clsGridArrangeFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", + strRObjectTypeLabelToAssignTo:=RObjectTypeLabel.Graph, + strRObjectFormatToAssignTo:=RObjectFormat.Image, + strRDataFrameNameToAddObjectTo:=ucrSelectorThreeVariableFrequencies.strCurrentDataFrame, + strObjectName:="last_graph") ucrBase.clsRsyntax.SetBaseROperator(clsTableBaseOperator) @@ -297,18 +298,17 @@ Public Class dlgThreeVariableFrequencies End If End Sub - Private Sub ucrBase_ClickOk(sender As Object, e As EventArgs) Handles ucrBase.ClickOk - Dim strGraph As String - Dim strTempScript As String = "" - 'Dim bIsAssigned As Boolean - 'Dim bToBeAssigned As Boolean - 'Dim strAssignTo As String + 'todo. Both option disabled + 'Private Sub ucrBase_ClickOk(sender As Object, e As EventArgs) Handles ucrBase.ClickOk + ' Dim strGraph As String + ' Dim strTempScript As String = "" - If rdoBoth.Checked Then - strGraph = clsGridArrangeFunction.ToScript(strTempScript) - frmMain.clsRLink.RunScript(strTempScript & strGraph, iCallType:=3) - End If - End Sub + + ' If rdoBoth.Checked Then + ' strGraph = clsGridArrangeFunction.ToScript(strTempScript) + ' frmMain.clsRLink.RunScript(strTempScript & strGraph, iCallType:=3) + ' End If + 'End Sub Private Sub cmdOptions_Click(sender As Object, e As EventArgs) Handles cmdOptions.Click sdgTwoWayFrequencies.SetRCode(clsSjTabFunction, clsSjPlotFunction, clsGraphBaseOperator, bResetSubdialog, bNewUseTitle:=False) diff --git a/instat/static/InstatObject/R/instat_object_R6.R b/instat/static/InstatObject/R/instat_object_R6.R index 1151662b35d..7068bd33b45 100644 --- a/instat/static/InstatObject/R/instat_object_R6.R +++ b/instat/static/InstatObject/R/instat_object_R6.R @@ -658,28 +658,36 @@ DataBook$set("public", "get_objects", function(data_name, object_name, object_ty ) #returns NULL if object is not found -#as explained in issue #7808 comments. New implementation is need to remove the internal parameter from the other "object" functions -#if parameter internal is set to false, parameter object_type_label will have to be passed -#todo. parameter object_type_label and internal can be removed as a parameter if all objects are saved in the same data book or structure -DataBook$set("public", "get_object", function(data_name, object_name, object_type_label = "", as_file = TRUE, internal = TRUE) { - if (!internal && identical(object_type_label,"graph") && exists(".graph_data_book")) { - r_instant_object <- .graph_data_book$get_object(data_name = data_name, object_name = object_name, internal = TRUE) +#see issue #7808 comments for more discussions +DataBook$set("public", "get_object", function(data_name, object_name, as_file = TRUE) { + if(missing(data_name) || data_name == overall_label) { + r_instant_object <- private$.objects[[object_name]] }else { - if(missing(data_name) || data_name == overall_label) { - r_instant_object <- private$.objects[[object_name]] - }else { - r_instant_object <- self$get_data_objects(data_name)$get_object(object_name = object_name) - } + r_instant_object <- self$get_data_objects(data_name)$get_object(object_name = object_name) } - if (is.null(r_instant_object)){ - return(NULL) + out <- r_instant_object + if(!is.null(out) && as_file ){ + out <- view_object(object = r_instant_object$object, object_format = r_instant_object$object_format) + } + return(out) + +} +) + +DataBook$set("public", "get_last_object", function(object_type_label, as_file = TRUE) { + r_instat_object <- NULL + #currently this function is only applicable to graphs. Implement for other objects like models, tables, summaries + if(object_type_label == "graph"){ + if(!is.null(private$.last_graph) && length(private$.last_graph) == 2) { + r_instat_object <- self$get_object(data_name = private$.last_graph[1], object_name = private$.last_graph[2], as_file = as_file) + } + } + + if(!is.null(r_instat_object) && !as_file){ + return(r_instat_object$object) }else{ - if(as_file){ - return(view_object(object = r_instant_object$object, object_format = r_instant_object$object_format)) - }else{ - return(r_instant_object) - } + return(r_instat_object) } } @@ -796,30 +804,7 @@ DataBook$set("public", "get_from_object", function(data_name, object_name, value } ) -DataBook$set("public", "get_last_object", function(object_type_label, as_file = TRUE, internal = TRUE) { - if (!internal && exists(".graph_data_book")){ - return(.graph_data_book$get_last_object(object_type_label = object_type_label, as_file = as_file, internal = TRUE)) - }else { - r_instat_object <- NULL - if(object_type_label == "graph"){ - if(!is.null(private$.last_graph) && length(private$.last_graph) == 2) { - r_instat_object <- self$get_object(data_name = private$.last_graph[1], object_name = private$.last_graph[2], as_file = as_file) - } - }else{ - #todo. any other object type label - } - - if(is.null(r_instat_object)){ - return() - }else if(as_file){ - return(r_instat_object) - }else{ - return(r_instat_object$object) - } - - } -} -) + # Filters ----------------------------------------------------------------- diff --git a/instat/static/InstatObject/R/stand_alone_functions.R b/instat/static/InstatObject/R/stand_alone_functions.R index da8948e38d0..27de5228e4f 100644 --- a/instat/static/InstatObject/R/stand_alone_functions.R +++ b/instat/static/InstatObject/R/stand_alone_functions.R @@ -2636,6 +2636,9 @@ view_object <- function(object, object_format) { #it saves the object as a file in the temporary folder #and returns the file path. view_graph_object <- function(graph_object){ + #get object class names + object_class_names <- class(graph_object) + #if there is a viewer, like in the case of RStudio then just print the object #this check is primarily meant to make this function work in a similar manner when run outside R-Instat r_viewer <- base::getOption("viewer") @@ -2643,32 +2646,34 @@ view_graph_object <- function(graph_object){ #TODO. When print command is called in R-Studio, a temp file is automatically created #Investigate how that can be done in R-Instat #as of 07/09/2022 just return the object. Important for RStudio to display the object + if ("grob" %in% object_class_names){ + #for grob objects draw them first + grid::grid.draw(graph_object) + } return(graph_object) } - #get object class names - object_class_names <- class(graph_object) + #get a unique temporary file name from the tempdir path file_name <- tempfile(pattern = "viewgraph", fileext = ".png") - #save the object as a html file depending on the object type + #save the object as a graph file depending on the object type grDevices::png(file = file_name, width = 4000, height = 4000, res = 500) - print(graph_object) + if ("grob" %in% object_class_names) { + grid::grid.draw(graph_object) + }else{ + print(graph_object) + } dev.off() #todo. use graphics.off() which one is better? + #todo. should we use respective package "convenience" functions to save the objects as image files depending on the class names? - #investigate if thatwill that help with resolution and scaling? - + #investigate if it will help with resolution and scaling? # if ("ggplot" %in% object_class_names) { - # # } else if ("ggmultiplot" %in% object_class_names) { - # # } else if ("openair" %in% object_class_names) { - # # } else if ("ggsurvplot" %in% object_class_names) { - # # } else if ("recordedplot" %in% object_class_names) { - # # } message("R viewer not detected. File saved in location ", file_name) @@ -2751,14 +2756,36 @@ view_html_object <- function(html_object){ return(file_name) } -# +#tries to recordPlot if graph_object = NULL, then returns graph object of class "recordedplot". +#applicable to base graphs only check_graph <- function(graph_object){ - if(is.null(graph_object)){ - #todo. add a try catch. Applies to commands written in the script window - return(recordPlot()) - }else{ - return(graph_object) + + out <- graph_object + + if (is.null(out)) { + out <- tryCatch({ + message("Recording plot") + recordPlot() + #return(recordPlot()) + }, + error = function(cond) { + message(paste("URL does not seem to exist:", url)) + message("Here's the original error message:") + message(cond) + # Choose a return value in case of error + return(NULL) + }, + warning = function(cond) { + message("Warning message:") + message(cond) + return(NULL) + }, + finally = { + message("Plot recorded") + }) } + + return(out) } From 5c016f805c7e54a006d2f0b8ec7c4d063da15d3c Mon Sep 17 00:00:00 2001 From: patowhiz Date: Tue, 6 Dec 2022 17:58:01 +0300 Subject: [PATCH 43/88] added comments and changed arrangeGrob R Fuction. --- instat/dlgThreeVariableFrequencies.vb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/instat/dlgThreeVariableFrequencies.vb b/instat/dlgThreeVariableFrequencies.vb index 49cfcf5e814..2a7be5fb57a 100644 --- a/instat/dlgThreeVariableFrequencies.vb +++ b/instat/dlgThreeVariableFrequencies.vb @@ -210,7 +210,10 @@ Public Class dlgThreeVariableFrequencies clsSjPlotFunction.AddParameter("show.n", "TRUE") clsGridArrangeFunction.SetPackageName("gridExtra") - clsGridArrangeFunction.SetRCommand("grid.arrange") + 'use arrangeGrob() instead of grid.arrange() because arrangeGrob() returns a grob without drawing on the current device. + 'read package ocumentation for more information + 'clsGridArrangeFunction.SetRCommand("grid.arrange") 'left here for future reference only + clsGridArrangeFunction.SetRCommand("arrangeGrob") clsGridArrangeFunction.AddParameter("grobs", clsROperatorParameter:=clsGraphBaseOperator) clsGridArrangeFunction.SetAssignToOutputObject(strRObjectToAssignTo:="last_graph", From 1199b767cb0ee3ffee8aa48c385b42912529b9b4 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Tue, 6 Dec 2022 15:10:23 +0000 Subject: [PATCH 44/88] Updated packages for installer extracted packages that need to be installed via the win binary extracted packages that are only available from the CRAN archive --- .../static/InstatObject/R/InstallPackages.R | 108 ++++-------------- 1 file changed, 21 insertions(+), 87 deletions(-) diff --git a/instat/static/InstatObject/R/InstallPackages.R b/instat/static/InstatObject/R/InstallPackages.R index 9f3799c1420..409f075fecd 100644 --- a/instat/static/InstatObject/R/InstallPackages.R +++ b/instat/static/InstatObject/R/InstallPackages.R @@ -1,5 +1,18 @@ +Sys.setenv(TZ='GMT') + +#Install packages from CRAN archive +install.packages("http://cran.r-project.org/src/contrib/Archive/signmedian.test/signmedian.test_1.5.1.tar.gz", repos=NULL, type="source") + +#Install packages from win.binary +install.packages("stringi", dependencies = FALSE, repos='https://cloud.r-project.org', type = "win.binary") +install.packages("stringr", dependencies = FALSE, repos='http://cran.us.r-project.org', type = "win.binary") +install.packages("RMySQL", dependencies = FALSE, repos='http://cran.us.r-project.org', type = "win.binary") +install.packages("terra", dependencies = FALSE, repos='http://cran.us.r-project.org', type = "win.binary") +install.packages("XML", dependencies = FALSE, repos='http://cran.us.r-project.org', type = "win.binary") + # Packages including dependencies # Generated from install_packages.R, do not edit manually! +# Above packages taken out packs <- c("abind", "agricolae", "agridat", "AlgDesign", "animation", "anytime", "arrangements", "ash", "askpass", "assertthat", "automap", "backports", "base64enc", "bayestestR", "BH", "bit", "bit64", @@ -59,107 +72,28 @@ packs <- c("abind", "agricolae", "agridat", "AlgDesign", "animation", "RcppRoll", "RCurl", "Rdpack", "readODS", "readr", "readxl", "recipes", "registry", "relimp", "rematch", "rematch2", "remotes", "repr", "reshape", "reshape2", "rgdal", "rio", "rje", "rlang", - "rmarkdown", "RMAWGEN", "RMySQL", "robustbase", "rootSolve", + "rmarkdown", "RMAWGEN", "robustbase", "rootSolve", "roxygen2", "rpart", "rpivotTable", "rprojroot", "rrefine", "rstatix", "rstudioapi", "rtf", "Rttf2pt1", "rversions", "rvest", "rworldmap", "rworldxtra", "s2", "sandwich", "sass", "scales", "scatterplot3d", "SearchTrees", "selectr", "seriation", "sessioninfo", "sf", "sftime", "shades", "shape", "shiny", "shinyFiles", "shinyjs", "shinythemes", - "shinyWidgets", "signmedian.test", "sjlabelled", "sjmisc", "sjPlot", + "shinyWidgets", "sjlabelled", "sjmisc", "sjPlot", "sjstats", "skimr", "snakecase", "SnowballC", "sodium", "sourcetools", "sp", "spacetime", "spam", "SparseM", "SPEI", "splines2", "splus2R", - "SQUAREM", "stars", "statip", "stinepack", "stringdist", "stringi", - "stringr", "strucchange", "styler", "survival", "svglite", "sys", - "systemfonts", "terra", "testthat", "texmex", "textshaping", + "SQUAREM", "stars", "statip", "stinepack", "stringdist", + "strucchange", "styler", "survival", "svglite", "sys", + "systemfonts", "testthat", "texmex", "textshaping", "TH.data", "tibble", "tidyr", "tidyselect", "tidytext", "timechange", "timeDate", "tinytex", "tokenizers", "treemapify", "trend", "tseries", "TSP", "TTR", "tweenr", "tzdb", "units", "urca", "urlchecker", "usethis", "utf8", "vars", "vcd", "vcdExtra", "vctrs", "viridis", "viridisLite", "visdat", "visreg", "vroom", "wakefield", "waldo", - "weathermetrics", "whisker", "withr", "wk", "xfun", "XML", "xml2", + "weathermetrics", "whisker", "withr", "wk", "xfun", "xml2", "xopen", "xtable", "xts", "yaml", "yulab.utils", "zip", "zoo", "zyp") -versions <- c("1.4-5", "1.3-5", "1.21", "1.2.1", "2.7", "0.3.9", - "1.1.9", "1.0-15", "1.1", "0.2.1", "1.0-16", "1.4.1", "0.1-3", - "0.13.0", "1.78.0-0", "4.0.5", "4.0.5", "1.0-7", "1.3-28.1", - "1.0-8", "1.1.3", "1.0.1", "0.4.1", "0.71.1", "1.0.6", "3.7.3", - "0.8-6", "3.1-1", "3.0-5", "6.0-93", "1.1.0", "2.2.4", "2.1.0", - "0.72.8", "2.3-58", "0.4.15", "0.2-6", "0.4-95", "7.3-20", "0.4-8", - "3.4.1", "3.2-5", "1.1-11", "0.8.0", "0.6.1", "0.3-63", "2.1.4", - "3.4.4", "1.2.6", "1.1.12", "0.2-18", "1.4-2", "2.3.1", "2.0-3", - "1.2.0", "0.0-8", "1.8.1", "0.2.0", "0.92", "0.4.4", "1.4.0", - "1.1.1", "0.4.3", "1.5.2", "1.3.2", "1.2.0", "4.3.3", "1.25.4", - "3.2-13", "1.14.6", "0.6.4", "1.2-40", "1.1.3", "1.0-6", "1.16.0", - "1.0-11", "1.4.2", "0.99.47", "2.4.4", "0.3.5", "0.6.30", "1.2-1", - "1.0-2", "0.4.2", "1.0.10", "0.7.4", "0.26", "1.7-12", "1.4.0", - "0.8.2", "0.4.3", "0.3.2", "1.8.2", "2.7.0", "1.4.1", "0.18", - "1.16", "3.2", "0.8-35", "0.999-6", "1.9.1", "0.18", "1.0", "2.1-3", - "1.0.7", "2.6", "1.0.3", "1.0.8", "2.1.1", "1.6.3", "1.1.0", - "14.1", "1.0.2", "1.1-8", "1.01-2", "1.1.3.1", "0.4.0", "0.5.2", - "1.5.2", "8.19", "0.8-83", "1.7.1", "1.2-4", "1.5-2", "1.5.2", - "1.10.0", "1.29.0", "0.3.0", "1.3.2", "2.0", "0.1.3", "1.1.7", - "1.5-18", "1.9.1", "0.2-2", "2.1.2", "0.4.0", "0.1.23", "1.1.4", - "0.9.1", "0.4.1", "0.10.2", "0.4.15", "0.3.3", "3.4.0", "0.1.0", - "0.5.1", "0.4.5", "0.5.0", "0.9.2", "0.5.4", "2.9", "0.6.4", - "0.3.6", "0.1.2", "4.2.4", "0.5.0", "1.3.1", "0.1.2", "2.6.6", - "0.1.2", "0.16.2", "1.6.2", "0.6-8", "1.1-2", "1.2-3", "1.0.0", - "2.3", "0.5-1", "0.1.5", "2.1-0", "0.3.1", "1.2.0", "2.5.1", - "1.4-2", "1.28.2", "0.9", "0.8-7", "4.7-2", "1.1.2", "2.4.1", - "0.5.3", "1.5.4", "1.6.6", "1.4.4", "3.0.2", "0.4-0", "0.6-0", - "3.3", "0.3.1", "0.18.8", "1.1-3", "0.15.2", "0.9-13", "0.2.6", - "1.0.14", "1.0.0", "2.1.0", "0.1-10", "0.1.4", "1.8.3", "2.2.1", - "2.23-20", "1.3.1", "1.7-1", "1.41", "0.4.2", "2.10.0", "10.0-1", - "1.3.0", "0.20-45", "0.6-30", "1.7.0", "0.2.2", "1.9.0", "2.1.1", - "3.1", "0.4.5", "1.0-9", "1.0.3", "0.8.0", "1.1-31", "1.7-3", - "2.9", "2.4.7", "1.3-1", "0.9-40", "1.9.0", "0.2-10", "2.7.3", - "2.0.3", "2.3.1", "1.2.9", "3.4.1", "1.1-5", "1.4", "7.3-58.1", - "1.5-3", "0.5-1", "0.63.0", "0.1-22", "2.0.1", "0.13.0", "1.8-41", - "0.12", "0.1.1.1", "1.2.5", "0.8", "0.9", "2.1-3", "1.2.2.2", - "0.1.10", "0.2-23", "1.8.4.2", "0.9.2.1", "0.20.3", "1.4-20", - "0.1-8", "0.5.0", "1.1-3", "0.3-6", "1.19", "3.1-160", "2.0.3", - "7.3-18", "1.0-4", "2016.8-1.1", "1.0.2", "2.12", "2.0.4", "4.2.5.1", - "1.6.3", "1.32.1", "0.20.0", "1.1.2", "0.5.1", "1.1", "0.5-4.3", - "0.10.1", "1.8.1", "2.0.2", "1.4.0", "2.0.3", "2.0.6", "1.3.2", - "4.10.1", "3.8-2", "2.8-1", "1.8.8", "0.1-8", "1.10-4", "1.4-1", - "1.0.0", "1.1.1", "1.18.0", "3.8.0", "2019.11.13", "0.1.1", "0.3.7", - "1.2.2", "0.11.0", "1.0-12", "1.2.0.1", "0.4-27", "1.7.2", "0.3.5", - "0.1-2", "1.5-8", "0.4.20", "5.94", "0.7.7", "1.0.2", "0.16.0", - "1.8.2", "1.25.0", "2.12.2", "2.5.1", "1.2.4", "0.1", "0.3.3", - "3.6-11", "0.51.4", "2.2.10", "1.4.0", "1.1-3", "2.0.0", "1.0.9", - "0.11.4.2.1", "0.3.3.9.3", "0.3.0", "1.98-1.9", "2.4", "1.7.0", - "2.1.3", "1.4.1", "1.0.3", "0.5-1", "1.0-5", "1.0.1", "2.1.2", - "2.4.2", "1.1.4", "0.8.9", "1.4.4", "1.5-32", "0.5.29", "1.12.1", - "1.0.6", "2.18", "1.3.7", "0.10.24", "0.95-0", "1.8.2.3", "7.2.2", - "4.1.19", "0.3.0", "2.0.3", "2.1.0", "0.7.1", "0.14", "0.4-14.1", - "1.3.11", "2.1.2", "1.0.3", "1.3-6", "1.01", "1.1.1", "3.0-2", - "0.4.4", "1.2.1", "0.3-42", "0.5.5", "0.4-2", "1.4.0", "1.2.2", - "1.0-9", "0.2-0", "1.4.0", "1.4.6", "1.7.3", "0.9.3", "2.1.0", - "1.2.0", "0.7.5", "1.5.1", "1.2.0", "2.8.9", "2.8.12", "0.18.2", - "2.1.4", "0.11.0", "0.7.0", "1.2.1", "0.1.7", "1.5-1", "1.2-8", - "2.9-1", "1.81", "1.7", "0.4.6", "1.3-3", "2021.1", "0.6-0", - "0.2.3", "1.4", "0.9.10", "1.7.6", "1.4.1", "1.5-3", "1.8.1", - "3.4-0", "2.1.0", "3.4.1", "1.0.4", "1.6-41", "3.1.5", "2.4.8", - "0.3.6", "1.1-1", "3.1.8", "1.2.1", "1.2.0", "0.3.4", "0.1.1", - "4021.106", "0.42", "0.2.3", "2.5.5", "1.1.4", "0.10-52", "1.2-1", - "0.24.3", "2.0.2", "0.3.0", "0.8-0", "1.3-3", "1.0.1", "2.1.6", - "1.2.2", "1.5-6", "1.4-10", "0.8-0", "0.5.1", "0.6.2", "0.4.1", - "0.5.3", "2.7.0", "1.6.0", "0.3.6", "0.4.0", "1.2.2", "0.4", - "2.5.0", "0.7.0", "0.35", "3.99-0.12", "1.3.3", "1.0.0", "1.8-4", - "0.12.2", "2.3.6", "0.0.5", "2.2.2", "1.8-11", "0.10-1.1") - -################################################## - -# Returns package names from packs which are not installed with the correct version -packages_not_installed <- function() { - success <- invisible(mapply(function(p, v) length(find.package(p, quiet = TRUE)) > 0 && compareVersion(as.character(packageVersion(p)), v) >= 0, packs, versions)) - return(names(success)[!success]) -} - -install.packages(packs, dependencies = FALSE, repos='http://cran.us.r-project.org') - -install.packages(packages_not_installed(), dependencies = FALSE, repos='http://cran.us.r-project.org') +install.packages(packs, dependencies = FALSE, repos='https://cloud.r-project.org', type="both") +#install development packages not on CRAN devtools::install_github("ianmoran11/mmtable2") - - From 7b6dae47591e9ec9ffe29bec1875611a4c1c8d0c Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Tue, 6 Dec 2022 16:02:01 +0000 Subject: [PATCH 45/88] moved install packages back to a file updated install packages to use InstallPackages.R --- .github/workflows/CreateInstaller.yml | 90 +-------------------------- 1 file changed, 2 insertions(+), 88 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 2f3496d0df4..0c655a0d836 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -159,94 +159,8 @@ jobs: - name: Install R packages (64 bit) run: | - Sys.setenv(TZ='GMT') - install.packages("http://cran.r-project.org/src/contrib/Archive/signmedian.test/signmedian.test_1.5.1.tar.gz", repos=NULL, type="source") - packs <- c("abind", "agricolae", "agridat", "AlgDesign", "animation", - "anytime", "arrangements", "ash", "askpass", "assertthat", "automap", - "backports", "base64enc", "bayestestR", "BH", "bit", "bit64", - "bitops", "boot", "brew", "brio", "broom", "bslib", "ca", "cachem", - "callr", "candisc", "car", "carData", "caret", "cellranger", - "changepoint", "checkmate", "chillR", "chron", "circlize", "CircStats", - "circular", "class", "classInt", "cli", "clifro", "climdex.pcic", - "clipr", "clock", "clue", "cluster", "cmsaf", "cmsafops", "cmsafvis", - "codetools", "coin", "colorRamps", "colorspace", "colourpicker", - "combinat", "commonmark", "confintr", "corrplot", "corrr", "countrycode", - "cowplot", "cpp11", "crayon", "credentials", "crosstalk", "curl", - "DAAG", "dae", "data.table", "datawizard", "date", "DBI", "deldir", - "dendextend", "DEoptimR", "desc", "DescTools", "devtools", "diffobj", - "digest", "distillery", "dotCall64", "downlit", "dplyr", "dslabs", - "DT", "e1071", "ecmwfr", "effectsize", "ellipse", "ellipsis", - "emmeans", "EnvStats", "estimability", "evaluate", "Evapotranspiration", - "Exact", "exactRankTests", "expm", "extraDistr", "extrafont", - "extrafontdb", "extRemes", "factoextra", "FactoMineR", "fansi", - "faraway", "farver", "fastDummies", "fastmap", "fields", "filelock", - "fitdistrplus", "flashClust", "FNN", "fontawesome", "forcats", - "foreach", "forecast", "foreign", "formula.tools", "Formula", - "fracdiff", "fs", "future.apply", "future", "gapminder", "gclus", - "gcookbook", "generics", "GenSA", "geosphere", "gert", "getPass", - "GGally", "ggalt", "ggdendro", "ggeffects", "ggfittext", "ggforce", - "ggformula", "ggfortify", "ggmosaic", "ggplot2", "ggplotify", - "ggpmisc", "ggpp", "ggpubr", "ggrepel", "ggridges", "ggsci", - "ggsignif", "ggstance", "ggtext", "ggthemes", "ggwordcloud", - "gh", "gitcreds", "gld", "GlobalOptions", "globals", "glue", - "gmp", "gnm", "goftest", "gower", "gridExtra", "gridGraphics", - "gridtext", "gstat", "gtable", "hardhat", "haven", "heplots", - "hexbin", "highr", "HistData", "Hmisc", "hms", "htmlTable", "htmltools", - "htmlwidgets", "httpuv", "httr", "hunspell", "hydroGOF", "hydroTSM", - "imputeTS", "ini", "insight", "interp", "intervals", "ipred", - "isoband", "iterators", "janeaustenr", "janitor", "jpeg", "jquerylib", - "jsonlite", "Kendall", "KernSmooth", "keyring", "klaR", "knitr", - "labeling", "labelled", "Lahman", "later", "lattice", "latticeExtra", - "lava", "lazyeval", "leaflet.providers", "leaflet", "leaps", - "lemon", "libcoin", "lifecycle", "listenv", "lme4", "lmodel2", - "lmom", "lmomco", "Lmoments", "lmtest", "lubridate", "lwgeom", - "magick", "magrittr", "mapdata", "mapproj", "maps", "maptools", - "markdown", "MASS", "Matrix", "MatrixModels", "matrixStats", - "mc2d", "memoise", "metR", "mgcv", "mime", "miniUI", "minqa", - "MKdescr", "MKinfer", "mlbench", "ModelMetrics", "modelr", "modeltools", - "mosaic", "mosaicCore", "mosaicData", "multcomp", "multcompView", - "munsell", "mvtnorm", "ncdf4.helpers", "ncdf4", "nlme", "nloptr", - "nnet", "nortest", "numDeriv", "nycflights13", "openair", "openssl", - "openxlsx", "operator.tools", "parallelly", "parameters", "patchwork", - "pbkrtest", "pbs", "PCICt", "performance", "pillar", "pingr", - "pkgbuild", "pkgconfig", "pkgdown", "pkgload", "plotly", "plotrix", - "pls", "plyr", "png", "polyclip", "polynom", "praise", "prettyunits", - "pROC", "processx", "prodlim", "productplots", "profvis", "progress", - "progressr", "proj4", "promises", "proxy", "ps", "purrr", "qap", - "quadprog", "quantmod", "quantreg", "questionr", "qvcalc", "R.cache", - "R.methodsS3", "R.oo", "R.utils", "R6", "ragg", "rainfarmr", - "rappdirs", "raster", "rasterVis", "rbibutils", "rcmdcheck", - "RColorBrewer", "rcorpora", "Rcpp", "RcppArmadillo", "RcppEigen", - "RcppRoll", "RCurl", "Rdpack", "readODS", "readr", "readxl", - "recipes", "registry", "relimp", "rematch", "rematch2", "remotes", - "repr", "reshape", "reshape2", "rgdal", "rio", "rje", "rlang", - "rmarkdown", "RMAWGEN", "RMySQL", "robustbase", "rootSolve", - "roxygen2", "rpart", "rpivotTable", "rprojroot", "rrefine", "rstatix", - "rstudioapi", "rtf", "Rttf2pt1", "rversions", "rvest", "rworldmap", - "rworldxtra", "s2", "sandwich", "sass", "scales", "scatterplot3d", - "SearchTrees", "selectr", "seriation", "sessioninfo", "sf", "sftime", - "shades", "shape", "shiny", "shinyFiles", "shinyjs", "shinythemes", - "shinyWidgets", "signmedian.test", "sjlabelled", "sjmisc", "sjPlot", - "sjstats", "skimr", "snakecase", "SnowballC", "sodium", "sourcetools", - "sp", "spacetime", "spam", "SparseM", "SPEI", "splines2", "splus2R", - "SQUAREM", "stars", "statip", "stinepack", "stringdist", "stringi", - "stringr", "strucchange", "styler", "survival", "svglite", "sys", - "systemfonts", "terra", "testthat", "texmex", "textshaping", - "TH.data", "tibble", "tidyr", "tidyselect", "tidytext", "timechange", - "timeDate", "tinytex", "tokenizers", "treemapify", "trend", "tseries", - "TSP", "TTR", "tweenr", "tzdb", "units", "urca", "urlchecker", - "usethis", "utf8", "vars", "vcd", "vcdExtra", "vctrs", "viridis", - "viridisLite", "visdat", "visreg", "vroom", "wakefield", "waldo", - "weathermetrics", "whisker", "withr", "wk", "xfun", "XML", "xml2", - "xopen", "xtable", "xts", "yaml", "yulab.utils", "zip", "zoo", - "zyp") - - install.packages(packs, dependencies = FALSE,repos='https://cloud.r-project.org', type="both") - devtools::install_github("ianmoran11/mmtable2") - shell: Rscript {0} - # run: | - # "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - # shell: cmd + "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + shell: cmd #- name: Install R packages (32 bit) # run: | From 14925210cd0d83ddabfe4ff62a165da758c54120 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Wed, 7 Dec 2022 07:58:12 +0300 Subject: [PATCH 46/88] Changes to output window --- instat/Model/Output/clsOutputLogger.vb | 95 +++++++++----------------- instat/clsRLink.vb | 28 ++------ 2 files changed, 36 insertions(+), 87 deletions(-) diff --git a/instat/Model/Output/clsOutputLogger.vb b/instat/Model/Output/clsOutputLogger.vb index a303773f9eb..9ac0e50e501 100644 --- a/instat/Model/Output/clsOutputLogger.vb +++ b/instat/Model/Output/clsOutputLogger.vb @@ -71,21 +71,49 @@ Public Class clsOutputLogger End Set End Property + + ''' + ''' Adds script to the output logger. + ''' Script is displayed in the output window if the "show commands" setting is enabled + ''' + ''' the R script + Public Sub AddRScript(strScript As String) + 'Always add new element to last element for each script + 'This will allow the output to atatch to the script later + _lastScriptElement = New clsOutputElement + _lastScriptElement.AddScript(strScript) + If frmMain.clsInstatOptions IsNot Nothing AndAlso frmMain.clsInstatOptions.bCommandsinOutput Then + _output.Add(_lastScriptElement) + RaiseEvent NewOutputAdded(_lastScriptElement) + End If + End Sub + Public Sub AddFileOutput(strFileName As String) + 'Note this always takes the last script added as corresponding script + If _lastScriptElement Is Nothing Then + Throw New Exception("Cannot find script to attach output to.") + Exit Sub + End If + Dim strFileExtension As String = Path.GetExtension(strFileName).ToLower + Dim outputElement As New clsOutputElement Select Case strFileExtension Case ".png" - AddImageOutput(strFileName) + outputElement.AddImageOutput(strFileName, _lastScriptElement.FormattedRScript) Case ".html" - AddHtmlOutput(strFileName) + outputElement.AddHtmlOutput(strFileName, _lastScriptElement.FormattedRScript) Case ".txt" - AddTextOutput(strFileName) + outputElement.AddTextOutput(strFileName, _lastScriptElement.FormattedRScript) Case Else MessageBox.Show("The file type to be added is currently not suported", "Developer Error", MessageBoxButtons.OK, MessageBoxIcon.Error) + Exit Sub End Select + _output.Add(outputElement) + 'raise event for output pages + RaiseEvent NewOutputAdded(outputElement) End Sub ''' @@ -104,54 +132,6 @@ Public Class clsOutputLogger End If End Sub - ''' - ''' Adds text file to be displayed within the output - ''' - ''' - Public Sub AddTextOutput(strFilename As String) - 'Note this always takes the last script added as corresponding script - If _lastScriptElement Is Nothing Then - Throw New Exception("Cannot find script to attach output to.") - Else - Dim outputElement As New clsOutputElement - outputElement.AddTextOutput(strFilename, _lastScriptElement.FormattedRScript) - _output.Add(outputElement) - RaiseEvent NewOutputAdded(outputElement) - End If - End Sub - - ''' - ''' Adds image file to be displayed within the output - ''' - ''' - Public Sub AddImageOutput(strFilename As String) - 'Note this always takes the last script added as corresponding script - If _lastScriptElement Is Nothing Then - Throw New Exception("Cannot find script to attach output to.") - Else - Dim outputElement As New clsOutputElement - outputElement.AddImageOutput(strFilename, _lastScriptElement.FormattedRScript) - _output.Add(outputElement) - RaiseEvent NewOutputAdded(outputElement) - End If - End Sub - - ''' - ''' Adds html output to be displayed within the output - ''' - ''' - Public Sub AddHtmlOutput(strFilename As String) - 'Note this always takes the last script added as corresponding script - If _lastScriptElement Is Nothing Then - Throw New Exception("Cannot find script to attach output to.") - Else - Dim outputElement As New clsOutputElement - outputElement.AddHtmlOutput(strFilename, _lastScriptElement.FormattedRScript) - _output.Add(outputElement) - RaiseEvent NewOutputAdded(outputElement) - End If - End Sub - ''' ''' Adds an output to the given filtered list ''' @@ -165,19 +145,6 @@ Public Class clsOutputLogger RaiseEvent NewOutputAddedToFilteredList(outputElement, strListName) End Sub - ''' - ''' Adds script to be displayed within the output - ''' - ''' - Public Sub AddRScript(strScript As String) - 'Always add new element to last element for each script - 'This will allow the output to atatch to the script later - _lastScriptElement = New clsOutputElement - _lastScriptElement.AddScript(strScript) - _output.Add(_lastScriptElement) - RaiseEvent NewOutputAdded(_lastScriptElement) - End Sub - ''' ''' Deletes output from a filtered list ''' diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index 026ccf1ebfb..1aa346f0cf7 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -107,13 +107,6 @@ Public Class RLink ''' Public bLogRScripts As Boolean = False - ''' - ''' Is set to True when the R output window is defined. - ''' If set to False, R scripts will not be shouwn in the output viewer - ''' - Public bOutputRscripts As Boolean = True - - ''' True to climate object exists. Public bClimateObjectExists As Boolean = False 'TODO SJL 23/04/20 Not used. Delete? @@ -805,19 +798,9 @@ Public Class RLink Dim strOutput As String = "" Dim strScriptWithComment As String Dim strSplitScript As String - Dim strTempGraphsDirectory As String - Dim clsPNGFunction As New RFunction Dim strTempAssignTo As String = ".temp_val" - Dim bSuccess As Boolean Dim bError As Boolean = False - ' set temp folder for graphs, e.g. to "C:\Users\myName\Temp\R_Instat_Temp_Graphs" - strTempGraphsDirectory = System.IO.Path.Combine(System.IO.Path.GetTempPath() & "R_Instat_Temp_Graphs") - 'Need to create directory as R unable to create the directory in linux - If Not Directory.Exists(strTempGraphsDirectory) Then - Directory.CreateDirectory(strTempGraphsDirectory) - End If - ' if comment provided If strComment <> "" Then ' Prefix comment to script, e.g. "# Code generated by the dialog, Import Dataset" & vbCrLf & "new_RDS <- readRDS(file=""C:/Users/myName ... @@ -829,10 +812,9 @@ Public Class RLink If bLogRScripts Then txtLog.Text = txtLog.Text & strScriptWithComment & Environment.NewLine End If - ' if the output window is defined then output comments (if exists) and script (if 'bShowCommands' is true). - If bOutputRscripts Then - clsOutputLogger.AddRScript(strScriptWithComment) - End If + + + clsOutputLogger.AddRScript(strScriptWithComment) 'TODO SJL 20/04/20 - is the commented out check below needed? 'If strScript.Length > 2000 Then @@ -925,8 +907,8 @@ Public Class RLink MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") End Try - ' if output window is defined, and there's something to output - If bOutputRscripts AndAlso strOutput IsNot Nothing AndAlso strOutput <> "" Then + ' if there's something to output + If strOutput IsNot Nothing AndAlso strOutput <> "" Then ' if output should be sent to web browser 'If iCallType = 4 Then ' ' rtbOutput.AddIntoWebBrowser(strHtmlCode:=strOutput) From d31251e6ac2f72e7eab282c585d3dbd7b369d9b2 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Wed, 7 Dec 2022 08:00:19 +0300 Subject: [PATCH 47/88] changed default commands to false --- instat/clsInstatOptionsDefaults.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/clsInstatOptionsDefaults.vb b/instat/clsInstatOptionsDefaults.vb index d04750751e7..08626ded9b9 100644 --- a/instat/clsInstatOptionsDefaults.vb +++ b/instat/clsInstatOptionsDefaults.vb @@ -16,7 +16,7 @@ Public Class clsInstatOptionsDefaults Public Shared ReadOnly DEFAULTbIncludeRDefaultParameters As Boolean = False - Public Shared ReadOnly DEFAULTbCommandsinOutput As Boolean = True + Public Shared ReadOnly DEFAULTbCommandsinOutput As Boolean = False Public Shared ReadOnly DEFAULTbIncludeCommentDefault As Boolean = True Public Shared ReadOnly DEFAULTbShowProcurementMenu As Boolean = True Public Shared ReadOnly DEFAULTbShowClimaticMenu As Boolean = True From e81fa0c879b1ddc09b8c743b7e2c8c5e566ae40b Mon Sep 17 00:00:00 2001 From: patowhiz Date: Wed, 7 Dec 2022 18:03:56 +0300 Subject: [PATCH 48/88] More changes --- instat/Model/Output/clsOutputLogger.vb | 19 +- instat/UserControl/ucrOutputPage.vb | 238 +++++++++--------- instat/clsRLink.vb | 179 ++++++------- .../InstatObject/R/stand_alone_functions.R | 9 +- 4 files changed, 223 insertions(+), 222 deletions(-) diff --git a/instat/Model/Output/clsOutputLogger.vb b/instat/Model/Output/clsOutputLogger.vb index 9ac0e50e501..17f75322377 100644 --- a/instat/Model/Output/clsOutputLogger.vb +++ b/instat/Model/Output/clsOutputLogger.vb @@ -82,13 +82,18 @@ Public Class clsOutputLogger 'This will allow the output to atatch to the script later _lastScriptElement = New clsOutputElement _lastScriptElement.AddScript(strScript) + + 'only display if settting is enabled + 'todo. should this be done at the logger level or the output page level? + 'if we associate every script with an output. then this can be pushed to output page. + 'reason being it's a rendering functionality not a logger functionality. If frmMain.clsInstatOptions IsNot Nothing AndAlso frmMain.clsInstatOptions.bCommandsinOutput Then _output.Add(_lastScriptElement) RaiseEvent NewOutputAdded(_lastScriptElement) End If End Sub - Public Sub AddFileOutput(strFileName As String) + Public Sub AddFileOutput(strFileName As String, Optional bAddOutputInInternalViewer As Boolean = True) 'Note this always takes the last script added as corresponding script If _lastScriptElement Is Nothing Then Throw New Exception("Cannot find script to attach output to.") @@ -111,9 +116,17 @@ Public Class clsOutputLogger MessageBoxIcon.Error) Exit Sub End Select + _output.Add(outputElement) - 'raise event for output pages - RaiseEvent NewOutputAdded(outputElement) + + If bAddOutputInInternalViewer Then + 'raise event for output pages + RaiseEvent NewOutputAdded(outputElement) + Else + Dim frmMaximiseOutput As New frmMaximiseOutput + frmMaximiseOutput.Show(strFileName:=strFileName) + End If + End Sub ''' diff --git a/instat/UserControl/ucrOutputPage.vb b/instat/UserControl/ucrOutputPage.vb index 5972b2b9fba..27113c582e4 100644 --- a/instat/UserControl/ucrOutputPage.vb +++ b/instat/UserControl/ucrOutputPage.vb @@ -142,6 +142,127 @@ Public Class ucrOutputPage pnlMain.PerformLayout() End Sub + Private Sub AddNewScript(outputElement As clsOutputElement) + Dim richTextBox As New RichTextBox With { + .Dock = DockStyle.Top, + .BorderStyle = BorderStyle.None + } + FillRichTextBoxWithFormatedRScript(richTextBox, outputElement.FormattedRScript) + Dim panel As Panel = AddElementPanel(outputElement) + panel.Controls.Add(richTextBox) + panel.Controls.SetChildIndex(richTextBox, 0) + SetRichTextBoxHeight(richTextBox) + AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText + AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave + End Sub + + Private Sub AddNewTextOutput(outputElement As clsOutputElement) + Dim panel As Panel = AddElementPanel(outputElement) + + If outputElement.StringOutput IsNot Nothing Then + Dim richTextBox As New RichTextBox With { + .Dock = DockStyle.Top, + .BorderStyle = BorderStyle.None + } + AddFormatedTextToRichTextBox(richTextBox, outputElement.StringOutput, OutputFont.ROutputFont, OutputFont.ROutputColour) + panel.Controls.Add(richTextBox) + panel.Controls.SetChildIndex(richTextBox, 0) + SetRichTextBoxHeight(richTextBox) + AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText + AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave + Else + Dim linkLabel As New LinkLabel + Dim ucrTextViewer As New ucrTextViewer + + linkLabel.Text = "Maximise" + AddHandler linkLabel.Click, Sub() + Dim frmMaximiseOutput As New frmMaximiseOutput + frmMaximiseOutput.Show(strFileName:=outputElement.TextOutput) + End Sub + + ucrTextViewer.LoadTextFile(strFileName:=outputElement.TextOutput) + ucrTextViewer.FormatText(OutputFont.ROutputFont, OutputFont.ROutputColour) + + AddHandler ucrTextViewer.richTextBox.MouseLeave, AddressOf panelContents_MouseLeave + + panel.Controls.Add(linkLabel) + panel.Controls.Add(ucrTextViewer) + panel.Controls.SetChildIndex(linkLabel, 0) + panel.Controls.SetChildIndex(ucrTextViewer, 0) + linkLabel.Dock = DockStyle.Top + ucrTextViewer.Dock = DockStyle.Top + End If + End Sub + + Private Sub AddNewImageOutput(outputElement As clsOutputElement) + Dim panel As Panel = AddElementPanel(outputElement) + Dim linkLabel As New LinkLabel + Dim pictureBox As New PictureBox + + linkLabel.Text = "Maximise" + + pictureBox.Load(outputElement.ImageOutput) + panel.Controls.Add(linkLabel) + panel.Controls.Add(pictureBox) + panel.Controls.SetChildIndex(linkLabel, 0) + panel.Controls.SetChildIndex(pictureBox, 0) + linkLabel.Dock = DockStyle.Top + pictureBox.Dock = DockStyle.Top + pictureBox.SizeMode = PictureBoxSizeMode.Zoom + SetPictureBoxHeight(pictureBox) + + AddHandler linkLabel.Click, Sub() + Dim frmMaximiseOutput As New frmMaximiseOutput + frmMaximiseOutput.Show(strFileName:=outputElement.ImageOutput) + End Sub + End Sub + + Private Sub AddNewHtmlOutput(outputElement As clsOutputElement) + Dim panel As Panel = AddElementPanel(outputElement) + Dim linkLabel As New LinkLabel + + If RuntimeInformation.IsOSPlatform(OSPlatform.Windows) AndAlso CefRuntimeWrapper.IsCefInitilised Then + Dim ucrWebview As New ucrWebViewer() + linkLabel.Text = "Maximise" + AddHandler linkLabel.Click, Sub() + Dim frmMaximiseOutput As New frmMaximiseOutput + frmMaximiseOutput.Show(strFileName:=outputElement.HtmlOutput) + End Sub + + ucrWebview.LoadHtmlFile(outputElement.HtmlOutput) + + panel.Controls.Add(linkLabel) + panel.Controls.Add(ucrWebview) + panel.Controls.SetChildIndex(linkLabel, 0) + panel.Controls.SetChildIndex(ucrWebview, 0) + + linkLabel.Dock = DockStyle.Top + ucrWebview.Dock = DockStyle.Top + Else + + linkLabel.Text = "View html file" + AddHandler linkLabel.Click, Sub() + 'display the html output in default browser + Cursor = Cursors.WaitCursor + Process.Start(outputElement.HtmlOutput) + Cursor = Cursors.Default + End Sub + + panel.Controls.Add(linkLabel) + panel.Controls.SetChildIndex(linkLabel, 0) + + linkLabel.Dock = DockStyle.Top + + 'display the html output in default browser + Cursor = Cursors.WaitCursor + Process.Start(outputElement.HtmlOutput) + Cursor = Cursors.Default + End If + + End Sub + + + ''' ''' Copies selected elements to clipboard ''' @@ -208,19 +329,6 @@ Public Class ucrOutputPage AddHandler checkBox.MouseLeave, AddressOf panelContents_MouseLeave End Sub - Private Sub AddNewScript(outputElement As clsOutputElement) - Dim richTextBox As New RichTextBox With { - .Dock = DockStyle.Top, - .BorderStyle = BorderStyle.None - } - FillRichTextBoxWithFormatedRScript(richTextBox, outputElement.FormattedRScript) - Dim panel As Panel = AddElementPanel(outputElement) - panel.Controls.Add(richTextBox) - panel.Controls.SetChildIndex(richTextBox, 0) - SetRichTextBoxHeight(richTextBox) - AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText - AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave - End Sub Private Function CopyOneImageOnly() As Boolean If SelectedElements.Count = 1 AndAlso SelectedElements(0).OutputType = OutputType.ImageOutput Then @@ -279,110 +387,6 @@ Public Class ucrOutputPage Next End Sub - Private Sub AddNewTextOutput(outputElement As clsOutputElement) - Dim panel As Panel = AddElementPanel(outputElement) - - If outputElement.StringOutput IsNot Nothing Then - Dim richTextBox As New RichTextBox With { - .Dock = DockStyle.Top, - .BorderStyle = BorderStyle.None - } - AddFormatedTextToRichTextBox(richTextBox, outputElement.StringOutput, OutputFont.ROutputFont, OutputFont.ROutputColour) - panel.Controls.Add(richTextBox) - panel.Controls.SetChildIndex(richTextBox, 0) - SetRichTextBoxHeight(richTextBox) - AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText - AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave - Else - Dim linkLabel As New LinkLabel - Dim ucrTextViewer As New ucrTextViewer - - linkLabel.Text = "Maximise" - AddHandler linkLabel.Click, Sub() - Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.TextOutput) - End Sub - - ucrTextViewer.LoadTextFile(strFileName:=outputElement.TextOutput) - ucrTextViewer.FormatText(OutputFont.ROutputFont, OutputFont.ROutputColour) - - AddHandler ucrTextViewer.richTextBox.MouseLeave, AddressOf panelContents_MouseLeave - - panel.Controls.Add(linkLabel) - panel.Controls.Add(ucrTextViewer) - panel.Controls.SetChildIndex(linkLabel, 0) - panel.Controls.SetChildIndex(ucrTextViewer, 0) - linkLabel.Dock = DockStyle.Top - ucrTextViewer.Dock = DockStyle.Top - End If - End Sub - - Private Sub AddNewImageOutput(outputElement As clsOutputElement) - Dim panel As Panel = AddElementPanel(outputElement) - Dim linkLabel As New LinkLabel - Dim pictureBox As New PictureBox - - linkLabel.Text = "Maximise" - - pictureBox.Load(outputElement.ImageOutput) - panel.Controls.Add(linkLabel) - panel.Controls.Add(pictureBox) - panel.Controls.SetChildIndex(linkLabel, 0) - panel.Controls.SetChildIndex(pictureBox, 0) - linkLabel.Dock = DockStyle.Top - pictureBox.Dock = DockStyle.Top - pictureBox.SizeMode = PictureBoxSizeMode.Zoom - SetPictureBoxHeight(pictureBox) - - AddHandler linkLabel.Click, Sub() - Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.ImageOutput) - End Sub - End Sub - - Private Sub AddNewHtmlOutput(outputElement As clsOutputElement) - Dim panel As Panel = AddElementPanel(outputElement) - Dim linkLabel As New LinkLabel - - If RuntimeInformation.IsOSPlatform(OSPlatform.Windows) AndAlso CefRuntimeWrapper.isCefInitilised Then - Dim ucrWebview As New ucrWebViewer() - linkLabel.Text = "Maximise" - AddHandler linkLabel.Click, Sub() - Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.HtmlOutput) - End Sub - - ucrWebview.LoadHtmlFile(outputElement.HtmlOutput) - - panel.Controls.Add(linkLabel) - panel.Controls.Add(ucrWebview) - panel.Controls.SetChildIndex(linkLabel, 0) - panel.Controls.SetChildIndex(ucrWebview, 0) - - linkLabel.Dock = DockStyle.Top - ucrWebview.Dock = DockStyle.Top - Else - - linkLabel.Text = "View html file" - AddHandler linkLabel.Click, Sub() - 'display the html output in default browser - Cursor = Cursors.WaitCursor - Process.Start(outputElement.HtmlOutput) - Cursor = Cursors.Default - End Sub - - panel.Controls.Add(linkLabel) - panel.Controls.SetChildIndex(linkLabel, 0) - - linkLabel.Dock = DockStyle.Top - - 'display the html output in default browser - Cursor = Cursors.WaitCursor - Process.Start(outputElement.HtmlOutput) - Cursor = Cursors.Default - End If - - End Sub Private Sub SetRichTextBoxHeight(richTextBox As RichTextBox) richTextBox.Height = (richTextBox.GetLineFromCharIndex(richTextBox.Text.Length) + 1) * (richTextBox.Font.Height + richTextBox.Margin.Vertical) + 5 diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index 1aa346f0cf7..dcd6b5db468 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -792,28 +792,20 @@ Public Class RLink Optional bUpdateGrids As Boolean = True, Optional bSilent As Boolean = False, Optional bAddOutputInViewer As Boolean = True) - Dim strCapturedScript As String - Dim expTemp As RDotNet.SymbolicExpression - Dim strTemp As String = "" - Dim strOutput As String = "" - Dim strScriptWithComment As String - Dim strSplitScript As String - Dim strTempAssignTo As String = ".temp_val" - Dim bError As Boolean = False - ' if comment provided - If strComment <> "" Then - ' Prefix comment to script, e.g. "# Code generated by the dialog, Import Dataset" & vbCrLf & "new_RDS <- readRDS(file=""C:/Users/myName ... - strScriptWithComment = GetFormattedComment(strComment) & Environment.NewLine & strScript - Else - strScriptWithComment = strScript + 'if there is no script to run then just ignore and exit sub + If String.IsNullOrWhiteSpace(strScript) Then + Exit Sub End If + 'If comment provided + 'Prefix comment to script, e.g. "# Code generated by the dialog, Import Dataset" & vbCrLf & "new_RDS <- readRDS(file=""C:/Users/myName ... + Dim strScriptWithComment As String = If(String.IsNullOrEmpty(strComment), strScript, GetFormattedComment(strComment) & Environment.NewLine & strScript) + If bLogRScripts Then txtLog.Text = txtLog.Text & strScriptWithComment & Environment.NewLine End If - clsOutputLogger.AddRScript(strScriptWithComment) 'TODO SJL 20/04/20 - is the commented out check below needed? @@ -824,106 +816,99 @@ Public Class RLink 'get the last R script command. todo, this should eventually use the RScript library functions to identify the last R script command Dim strLastScript As String = GetRunnableCommandLines(strScript).LastOrDefault - If strLastScript IsNot Nothing AndAlso (strLastScript.Contains("get_object") OrElse strLastScript.Contains("get_last_object") OrElse strLastScript.Contains("view_object")) Then - Try - 'if object output should be returned as a file do the following. - Dim strNewAssignedToScript As String = ConstructAssignTo(strTempAssignTo, strScript) - Evaluate(strNewAssignedToScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) - expTemp = GetSymbol(strTempAssignTo) - If expTemp IsNot Nothing Then - 'get the file path name - strTemp = String.Join(Environment.NewLine, expTemp.AsCharacter()) - If File.Exists(strTemp) Then - If bAddOutputInViewer Then - clsOutputLogger.AddFileOutput(strTemp) - Else - Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=strTemp) - End If - End If - End If - Catch e As Exception - MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") - End Try - ElseIf iCallType = 0 Then 'if script output should be ignored. to do. deprecated + If strLastScript.Contains("get_object") OrElse strLastScript.Contains("get_last_object") OrElse strLastScript.Contains("view_object") Then + + Dim strFilePathName As String = GetFileOutput(strScript, bSilent, bSeparateThread, bShowWaitDialogOverride) + If Not String.IsNullOrEmpty(strFilePathName) Then + clsOutputLogger.AddFileOutput(strFilePathName, bAddOutputInViewer) + End If + + ElseIf iCallType = 0 Then + 'todo. remove this block? + 'if script output should be ignored. todo. deprecated Evaluate(strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) - ElseIf iCallType = 1 OrElse iCallType = 4 Then 'else if script output should be stored in a temp variable + ElseIf iCallType = 1 OrElse iCallType = 4 Then + 'todo remove this block? + 'else if script output should be stored in a temp variable ' TODO SJL In RInstat, iCallType only seems to be 0, 2 or 3. Are call types 1 and 4 used? - Try - 'TODO check this is valid syntax in all cases - ' i.e. this is potentially: x <- y <- 1 - Evaluate(strTempAssignTo & " <- " & strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) - expTemp = GetSymbol(strTempAssignTo) - If expTemp IsNot Nothing Then - strTemp = String.Join(Environment.NewLine, expTemp.AsCharacter()) - strOutput = strOutput & strTemp & Environment.NewLine - End If - Catch e As Exception - MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") - End Try - Else ' else if script output should not be ignored, not stored in a graph and not stored in a variable - 'if script comes from script window, or else script is a single line - If iCallType = 5 OrElse strScript.Trim(Environment.NewLine.ToCharArray).LastIndexOf(Environment.NewLine.ToCharArray) = -1 Then - 'wrap the whole script in 'capture.output' - ' 'capture.output' returns the result of the R command as a string. - ' This string can be displayed later in the output window. - strCapturedScript = "capture.output(" & strScript & ")" - Else 'else if script is multi-line - 'execute all lines apart from the final line - strSplitScript = Left(strScript, strScript.Trim(Environment.NewLine.ToCharArray).LastIndexOf(Environment.NewLine.ToCharArray)) - If strSplitScript <> "" Then - Try - bError = Not Evaluate(strSplitScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) - Catch e As Exception - MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") - End Try + + Dim strTempAssignTo As String = ".temp_val" + 'TODO check this is valid syntax in all cases + ' i.e. this is potentially: x <- y <- 1 + Evaluate(strTempAssignTo & " <- " & strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) + Dim expTemp As RDotNet.SymbolicExpression = GetSymbol(strTempAssignTo) + If expTemp IsNot Nothing Then + Dim strOutput As String = String.Join(Environment.NewLine, expTemp.AsCharacter()) & Environment.NewLine + ' if there's something to output + If strOutput IsNot Nothing AndAlso strOutput <> "" Then + clsOutputLogger.AddStringOutput(strOutput) End If - 'ensure that the final line of the script will be executed next - strSplitScript = Right(strScript, strScript.Length - strScript.Trim(Environment.NewLine.ToCharArray).LastIndexOf(Environment.NewLine.ToCharArray) - 2) - 'wrap the final line in 'capture.output' so that when it's executed, the result can be displayed in the output window - strCapturedScript = "capture.output(" & strSplitScript & ")" End If - Try - If Not bError Then - 'execute the script and assign the result to a temporary variable - If Evaluate(strTempAssignTo & " <- " & strCapturedScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) Then - expTemp = GetSymbol(strTempAssignTo) - Evaluate("rm(" & strTempAssignTo & ")", bSilent:=True) - If expTemp IsNot Nothing Then - strTemp = String.Join(Environment.NewLine, expTemp.AsCharacter()) - If strTemp <> "" Then - 'ensure that the data returned from the script will be displayed in the output window - strOutput = strOutput & strTemp & Environment.NewLine - End If - End If + + Else + 'else if script output should not be ignored or not stored as an object or variable + + Dim arrRScriptLines() As String = GetRunnableCommandLines(strScript) + + 'if output should be stored as a variable just execute the script + If arrRScriptLines.Last().Contains("<-") Then + Evaluate(strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) + Else + 'else capture the output as plain text + Dim bSuccess As Boolean = True + If arrRScriptLines.Length > 1 Then + Dim strScriptWithoutLastLine As String = String.Join(Environment.NewLine, arrRScriptLines, 0, arrRScriptLines.Length - 1) + bSuccess = Evaluate(strScriptWithoutLastLine, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) + End If + + If bSuccess Then + Dim strFilePathName As String = GetFileOutput("view_object(object = " & arrRScriptLines.Last() & " , object_format = 'text' )", bSilent, bSeparateThread, bShowWaitDialogOverride) + If Not String.IsNullOrEmpty(strFilePathName) Then + clsOutputLogger.AddFileOutput(strFilePathName, bAddOutputInViewer) End If End If - Catch e As Exception - MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") - End Try + End If + End If Catch e As Exception MsgBox(e.Message & Environment.NewLine & "The error occurred in attempting to run the following R command(s):" & Environment.NewLine & strScript, MsgBoxStyle.Critical, "Error running R command(s)") End Try - ' if there's something to output - If strOutput IsNot Nothing AndAlso strOutput <> "" Then - ' if output should be sent to web browser - 'If iCallType = 4 Then - ' ' rtbOutput.AddIntoWebBrowser(strHtmlCode:=strOutput) - ' 'TODO Add to web browser - 'Else - ' clsOutputLogger.AddStringOutput(strOutput) - 'End If - clsOutputLogger.AddStringOutput(strOutput) - End If + AppendToAutoSaveLog(strScriptWithComment & Environment.NewLine) If bUpdateGrids Then frmMain.UpdateAllGrids() End If End Sub + ''' + ''' Gets the file path name if file is available and has contents, else returns an empty string + ''' + ''' Script that produces a file output + ''' + ''' + ''' + ''' file path name if file is avaialble and has contents else empty string + Private Function GetFileOutput(strScript As String, bSilent As Boolean, bSeparateThread As Boolean, bShowWaitDialogOverride As Nullable(Of Boolean)) As String + Dim strFilePath As String = "" + Dim strTempAssignTo As String = ".temp_val" + Dim expTemp As RDotNet.SymbolicExpression + Dim strNewAssignedToScript As String = ConstructAssignTo(strTempAssignTo, strScript) + Evaluate(strNewAssignedToScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) + expTemp = GetSymbol(strTempAssignTo, bSilent:=bSilent) + Evaluate("rm(" & strTempAssignTo & ")", bSilent:=True) + If expTemp IsNot Nothing Then + 'get the file path name, check if it exists and whether it has contents + 'if not, just return empty file path + strFilePath = String.Join(Environment.NewLine, expTemp.AsCharacter()) + If Not File.Exists(strFilePath) OrElse New FileInfo(strFilePath).Length = 0 Then + strFilePath = "" + End If + End If + Return strFilePath + End Function + '''-------------------------------------------------------------------------------------------- ''' This method executes the R script and displays ''' the output as text or graph (determined by ). diff --git a/instat/static/InstatObject/R/stand_alone_functions.R b/instat/static/InstatObject/R/stand_alone_functions.R index 27de5228e4f..d015f15faf5 100644 --- a/instat/static/InstatObject/R/stand_alone_functions.R +++ b/instat/static/InstatObject/R/stand_alone_functions.R @@ -2696,12 +2696,13 @@ view_text_object <- function(text_object){ return(utils::capture.output(text_object)) } - #get object class names - object_class_names <- class(text_object) + #get a unique temporary file name from the tempdir path file_name <- tempfile(pattern = "viewtext", fileext = ".txt") #todo. should we use respective package "convenience" functions to save the objects as text files depending on the class names + #get object class names + #object_class_names <- class(text_object) #save the object as a text file utils::capture.output(text_object, file = file_name) @@ -2766,11 +2767,9 @@ check_graph <- function(graph_object){ out <- tryCatch({ message("Recording plot") recordPlot() - #return(recordPlot()) }, error = function(cond) { - message(paste("URL does not seem to exist:", url)) - message("Here's the original error message:") + message("Graph object does not exist:") message(cond) # Choose a return value in case of error return(NULL) From 3b0b5e5b344fb754e4ad3c43d3a71625f9b9f818 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Thu, 8 Dec 2022 08:46:22 +0300 Subject: [PATCH 49/88] Enabled comments and commands seperately --- instat/Model/Output/clsOutputElement.vb | 143 ++++++++---------------- instat/Model/Output/clsOutputLogger.vb | 98 ++++++---------- instat/UserControl/ucrOutputPage.vb | 106 ++++++++++++------ instat/UserControl/ucrOutputPages.vb | 6 +- instat/clsRLink.vb | 23 ++-- instat/frmMain.vb | 4 +- 6 files changed, 167 insertions(+), 213 deletions(-) diff --git a/instat/Model/Output/clsOutputElement.vb b/instat/Model/Output/clsOutputElement.vb index c182d21128a..52e82c5d3f6 100644 --- a/instat/Model/Output/clsOutputElement.vb +++ b/instat/Model/Output/clsOutputElement.vb @@ -13,39 +13,25 @@ ' ' You should have received a copy of the GNU General Public License ' along with this program. If not, see . +Imports System.IO Imports RScript ''' -''' Output element for a r command, the output element could be just the script or the script with -''' an image or output text +''' Output element for an R script. +''' Must contain an R script. The output itself is optional depending on whether the script produces the an output or not. ''' Public Class clsOutputElement + 'holds the id given to the output element Private _id As Integer - 'hold the script elements that form the R script that produced the output - Private _lstRScriptElements As New List(Of clsRScriptElement) - Private _outputType As OutputType - - 'todo. deprecate this list with _lstTextOutput ? - Private _lstStringOutput As New List(Of String) - - 'holds the file paths to the text outputs - Private _lstTextOutput As New List(Of String) + 'holds the R script that produced the output + Private _strScript As String - 'holds the file paths to the image outputs - Private _lstImageOutput As New List(Of String) + 'holds the output type; Text, Image, HTML etc + Private _outputType As OutputType - 'holds the file paths to the html outputs - Private _lstHtmlOutput As New List(Of String) + 'holds the file paths to outputs or the a string output + Private _strOutput As String - ''' - ''' Holds formated R Script, split into R Script Elements - ''' - ''' - Public ReadOnly Property FormattedRScript As List(Of clsRScriptElement) - Get - Return _lstRScriptElements - End Get - End Property ''' ''' ID used for ordering elements @@ -55,35 +41,19 @@ Public Class clsOutputElement Get Return _id End Get - Set(ByVal value As Integer) + Set(value As Integer) _id = value End Set End Property - Public ReadOnly Property TextOutput As String - Get - Return _lstTextOutput.FirstOrDefault() - End Get - End Property - - ''' - ''' Holds image file path if outputType is image file - ''' - ''' - Public ReadOnly Property ImageOutput As String - Get - Return _lstImageOutput.FirstOrDefault() - End Get - End Property - - Public ReadOnly Property HtmlOutput As String + Public ReadOnly Property Script As String Get - Return _lstHtmlOutput.FirstOrDefault() + Return _strScript End Get End Property ''' - ''' Defines the type of output + ''' Gets the type of output ''' ''' Public ReadOnly Property OutputType() As OutputType @@ -92,80 +62,57 @@ Public Class clsOutputElement End Get End Property - ''' - ''' Holds the string output. Not the R Script - ''' - ''' - Public ReadOnly Property StringOutput As String + Public ReadOnly Property Output As String Get - Return _lstStringOutput.FirstOrDefault() + Return _strOutput End Get End Property - 'this does a shallow clone - 'todo. add a deep clone implementation Public Function Clone() As clsOutputElement Return Me.MemberwiseClone End Function - Public Sub AddTextOutput(strFileName As String, script As List(Of clsRScriptElement)) - _lstTextOutput.Add(strFileName) - _lstRScriptElements = script - _outputType = OutputType.TextOutput - End Sub - - ''' - ''' When adding Output the script must always be added too - ''' - ''' - ''' - Public Sub AddImageOutput(strFileName As String, script As List(Of clsRScriptElement)) - _lstImageOutput.Add(strFileName) - _lstRScriptElements = script - _outputType = OutputType.ImageOutput - End Sub - - Public Sub AddHtmlOutput(strFileName As String, script As List(Of clsRScriptElement)) - _lstHtmlOutput.Add(strFileName) - _lstRScriptElements = script - _outputType = OutputType.HtmlOutput + Public Sub SetContent(strScript As String, outputType As OutputType, Optional strOutputFileName As String = "") + _strScript = strScript + _outputType = outputType + _strOutput = strOutputFileName End Sub ''' - ''' Adds script and passes through RScript to split into elements + ''' Holds formated R Script, split into R Script Elements ''' - ''' - Public Sub AddScript(strScript As String) - Try - Dim rScript As New clsRScript(strScript) - Dim lstTokens As List(Of clsRToken) = rScript.GetLstTokens(rScript.GetLstLexemes(strScript)) 'rScript.lstTokens - If lstTokens IsNot Nothing Then - For Each rToken In lstTokens - _lstRScriptElements.Add(New clsRScriptElement With + ''' + Public ReadOnly Property FormattedRScript As List(Of clsRScriptElement) + Get + Dim _lstRScriptElements As New List(Of clsRScriptElement) + Try + Dim rScript As New clsRScript(_strScript) + Dim lstTokens As List(Of clsRToken) = rScript.GetLstTokens(rScript.GetLstLexemes(_strScript)) 'rScript.lstTokens + If lstTokens IsNot Nothing Then + For Each rToken In lstTokens + _lstRScriptElements.Add(New clsRScriptElement With { .Text = rToken.strTxt, .Type = rToken.enuToken }) - Next - _outputType = OutputType.Script - End If - Catch ex As Exception - MessageBox.Show("Unable to parse the following R Script: '" & strScript & "'." & + Next + End If + Catch ex As Exception + MessageBox.Show("Unable to parse the following R Script: '" & _strScript & "'." & Environment.NewLine & ex.Message, "Developer Error", MessageBoxButtons.OK, MessageBoxIcon.Error) - End Try - End Sub + End Try + Return _lstRScriptElements + End Get + End Property + + Public ReadOnly Property IsFile As Boolean + Get + Return File.Exists(Output) + End Get + End Property - ''' - ''' When adding Output the script must always be added too - ''' - ''' - Public Sub AddStringOutput(strOutput As String, script As List(Of clsRScriptElement)) - _lstStringOutput.Add(strOutput) - _lstRScriptElements = script - _outputType = OutputType.TextOutput - End Sub End Class \ No newline at end of file diff --git a/instat/Model/Output/clsOutputLogger.vb b/instat/Model/Output/clsOutputLogger.vb index 17f75322377..74df7638012 100644 --- a/instat/Model/Output/clsOutputLogger.vb +++ b/instat/Model/Output/clsOutputLogger.vb @@ -20,14 +20,13 @@ Imports System.IO ''' Public Class clsOutputLogger Private _filteredOutputs As List(Of clsOutputList) - Private _lastScriptElement As clsOutputElement - Private _output As List(Of clsOutputElement) + Private _outputElements As List(Of clsOutputElement) ''Output not used externally at the moment but will this will need to ''change if we are to remove from the output list. - Public ReadOnly Property Output As List(Of clsOutputElement) + Public ReadOnly Property OutputElements As List(Of clsOutputElement) Get - Return _output + Return _outputElements End Get End Property @@ -35,7 +34,7 @@ Public Class clsOutputLogger ''' Constructor ''' Public Sub New() - _output = New List(Of clsOutputElement) + _outputElements = New List(Of clsOutputElement) _filteredOutputs = New List(Of clsOutputList) End Sub @@ -71,80 +70,51 @@ Public Class clsOutputLogger End Set End Property - - ''' - ''' Adds script to the output logger. - ''' Script is displayed in the output window if the "show commands" setting is enabled - ''' - ''' the R script - Public Sub AddRScript(strScript As String) - 'Always add new element to last element for each script - 'This will allow the output to atatch to the script later - _lastScriptElement = New clsOutputElement - _lastScriptElement.AddScript(strScript) - - 'only display if settting is enabled - 'todo. should this be done at the logger level or the output page level? - 'if we associate every script with an output. then this can be pushed to output page. - 'reason being it's a rendering functionality not a logger functionality. - If frmMain.clsInstatOptions IsNot Nothing AndAlso frmMain.clsInstatOptions.bCommandsinOutput Then - _output.Add(_lastScriptElement) - RaiseEvent NewOutputAdded(_lastScriptElement) - End If - End Sub - - Public Sub AddFileOutput(strFileName As String, Optional bAddOutputInInternalViewer As Boolean = True) + Public Sub AddOutput(strScript As String, strOutput As String, bAsFile As Boolean, bAddOutputInInternalViewer As Boolean) 'Note this always takes the last script added as corresponding script - If _lastScriptElement Is Nothing Then + If String.IsNullOrWhiteSpace(strScript) Then Throw New Exception("Cannot find script to attach output to.") Exit Sub End If - Dim strFileExtension As String = Path.GetExtension(strFileName).ToLower + Dim outputType As OutputType + If String.IsNullOrEmpty(strOutput) Then + outputType = OutputType.Script + ElseIf Not bAsFile Then + outputType = OutputType.TextOutput + Else + Dim strFileExtension As String = Path.GetExtension(strOutput).ToLower + Select Case strFileExtension + Case ".png" + outputType = OutputType.ImageOutput + Case ".html" + outputType = OutputType.HtmlOutput + Case ".txt" + outputType = OutputType.TextOutput + Case Else + MessageBox.Show("The file type to be added is currently not suported", + "Developer Error", + MessageBoxButtons.OK, + MessageBoxIcon.Error) + Exit Sub + End Select + End If + Dim outputElement As New clsOutputElement - Select Case strFileExtension - Case ".png" - outputElement.AddImageOutput(strFileName, _lastScriptElement.FormattedRScript) - Case ".html" - outputElement.AddHtmlOutput(strFileName, _lastScriptElement.FormattedRScript) - Case ".txt" - outputElement.AddTextOutput(strFileName, _lastScriptElement.FormattedRScript) - Case Else - MessageBox.Show("The file type to be added is currently not suported", - "Developer Error", - MessageBoxButtons.OK, - MessageBoxIcon.Error) - Exit Sub - End Select - - _output.Add(outputElement) + outputElement.SetContent(strScript, outputType, strOutput) + + _outputElements.Add(outputElement) If bAddOutputInInternalViewer Then 'raise event for output pages RaiseEvent NewOutputAdded(outputElement) Else Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=strFileName) + frmMaximiseOutput.Show(strFileName:=strOutput) End If End Sub - ''' - ''' Adds string output to be displayed within the output - ''' - ''' - Public Sub AddStringOutput(strOutput As String) - 'Note this is always takes the last script added as corresponding script - If _lastScriptElement Is Nothing Then - Throw New Exception("Cannot find script to attach output to.") - Else - Dim outputElement As New clsOutputElement - outputElement.AddStringOutput(strOutput, _lastScriptElement.FormattedRScript) - _output.Add(outputElement) - RaiseEvent NewOutputAdded(outputElement) - End If - End Sub - ''' ''' Adds an output to the given filtered list ''' @@ -178,7 +148,7 @@ Public Class clsOutputLogger ''' ''' Public Sub DeleteOutputFromMainList(outputElement As clsOutputElement) - _output.RemoveAll(Function(x) x Is outputElement) + _outputElements.RemoveAll(Function(x) x Is outputElement) End Sub ''' diff --git a/instat/UserControl/ucrOutputPage.vb b/instat/UserControl/ucrOutputPage.vb index 27113c582e4..96188967e12 100644 --- a/instat/UserControl/ucrOutputPage.vb +++ b/instat/UserControl/ucrOutputPage.vb @@ -15,6 +15,7 @@ ' along with this program. If not, see . Imports System.Runtime.InteropServices +Imports RScript ''' ''' Output page for R outputs ''' @@ -128,16 +129,22 @@ Public Class ucrOutputPage ''' ''' Public Sub AddNewOutput(outputElement As clsOutputElement) - Select Case outputElement.OutputType - Case OutputType.Script - AddNewScript(outputElement) - Case OutputType.TextOutput - AddNewTextOutput(outputElement) - Case OutputType.ImageOutput - AddNewImageOutput(outputElement) - Case OutputType.HtmlOutput - AddNewHtmlOutput(outputElement) - End Select + 'add the script first. This applies to whether the output has an output or not or + 'whether it's just a script output + AddNewScript(outputElement) + + 'then add the output of the script. If the output element is just a script, ignore it since it's already been added above + If Not String.IsNullOrEmpty(outputElement.Output) Then + Select Case outputElement.OutputType + Case OutputType.TextOutput + AddNewTextOutput(outputElement) + Case OutputType.ImageOutput + AddNewImageOutput(outputElement) + Case OutputType.HtmlOutput + AddNewHtmlOutput(outputElement) + End Select + End If + pnlMain.VerticalScroll.Value = pnlMain.VerticalScroll.Maximum pnlMain.PerformLayout() End Sub @@ -147,7 +154,36 @@ Public Class ucrOutputPage .Dock = DockStyle.Top, .BorderStyle = BorderStyle.None } - FillRichTextBoxWithFormatedRScript(richTextBox, outputElement.FormattedRScript) + + 'if settings are not available or both show commands and comments settings are enabled then just show the whole script + If frmMain.clsInstatOptions Is Nothing OrElse (frmMain.clsInstatOptions.bIncludeCommentDefault AndAlso frmMain.clsInstatOptions.bCommandsinOutput) Then + FillRichTextBoxWithFormatedRScript(richTextBox, outputElement.FormattedRScript) + Else + + 'if either show commands or comments settings is enabled show the script that corresponds to either + If frmMain.clsInstatOptions.bIncludeCommentDefault Then + 'show comments only + For Each line As clsRScriptElement In outputElement.FormattedRScript + If line.Type = clsRToken.typToken.RComment Then + AddFormatedTextToRichTextBox(richTextBox, line.Text, OutputFont.GetFontForScriptType(line.Type), OutputFont.GetColourForScriptType(line.Type)) + End If + Next + + ElseIf frmMain.clsInstatOptions.bCommandsinOutput Then + 'show command lines that are not comments + For Each line As clsRScriptElement In outputElement.FormattedRScript + If Not (line.Type = clsRToken.typToken.RComment) Then + AddFormatedTextToRichTextBox(richTextBox, line.Text, OutputFont.GetFontForScriptType(line.Type), OutputFont.GetColourForScriptType(line.Type)) + End If + Next + End If + End If + + 'if no contents added just exit sub + If richTextBox.TextLength = 0 Then + Exit Sub + End If + Dim panel As Panel = AddElementPanel(outputElement) panel.Controls.Add(richTextBox) panel.Controls.SetChildIndex(richTextBox, 0) @@ -159,28 +195,17 @@ Public Class ucrOutputPage Private Sub AddNewTextOutput(outputElement As clsOutputElement) Dim panel As Panel = AddElementPanel(outputElement) - If outputElement.StringOutput IsNot Nothing Then - Dim richTextBox As New RichTextBox With { - .Dock = DockStyle.Top, - .BorderStyle = BorderStyle.None - } - AddFormatedTextToRichTextBox(richTextBox, outputElement.StringOutput, OutputFont.ROutputFont, OutputFont.ROutputColour) - panel.Controls.Add(richTextBox) - panel.Controls.SetChildIndex(richTextBox, 0) - SetRichTextBoxHeight(richTextBox) - AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText - AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave - Else + If outputElement.IsFile Then Dim linkLabel As New LinkLabel Dim ucrTextViewer As New ucrTextViewer linkLabel.Text = "Maximise" AddHandler linkLabel.Click, Sub() Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.TextOutput) + frmMaximiseOutput.Show(strFileName:=outputElement.Output) End Sub - ucrTextViewer.LoadTextFile(strFileName:=outputElement.TextOutput) + ucrTextViewer.LoadTextFile(strFileName:=outputElement.Output) ucrTextViewer.FormatText(OutputFont.ROutputFont, OutputFont.ROutputColour) AddHandler ucrTextViewer.richTextBox.MouseLeave, AddressOf panelContents_MouseLeave @@ -191,6 +216,18 @@ Public Class ucrOutputPage panel.Controls.SetChildIndex(ucrTextViewer, 0) linkLabel.Dock = DockStyle.Top ucrTextViewer.Dock = DockStyle.Top + Else + Dim richTextBox As New RichTextBox With { + .Dock = DockStyle.Top, + .BorderStyle = BorderStyle.None + } + AddFormatedTextToRichTextBox(richTextBox, outputElement.Output, OutputFont.ROutputFont, OutputFont.ROutputColour) + panel.Controls.Add(richTextBox) + panel.Controls.SetChildIndex(richTextBox, 0) + SetRichTextBoxHeight(richTextBox) + AddHandler richTextBox.KeyUp, AddressOf richTextBox_CopySelectedText + AddHandler richTextBox.MouseLeave, AddressOf panelContents_MouseLeave + End If End Sub @@ -201,7 +238,7 @@ Public Class ucrOutputPage linkLabel.Text = "Maximise" - pictureBox.Load(outputElement.ImageOutput) + pictureBox.Load(outputElement.Output) panel.Controls.Add(linkLabel) panel.Controls.Add(pictureBox) panel.Controls.SetChildIndex(linkLabel, 0) @@ -213,7 +250,7 @@ Public Class ucrOutputPage AddHandler linkLabel.Click, Sub() Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.ImageOutput) + frmMaximiseOutput.Show(strFileName:=outputElement.Output) End Sub End Sub @@ -226,10 +263,10 @@ Public Class ucrOutputPage linkLabel.Text = "Maximise" AddHandler linkLabel.Click, Sub() Dim frmMaximiseOutput As New frmMaximiseOutput - frmMaximiseOutput.Show(strFileName:=outputElement.HtmlOutput) + frmMaximiseOutput.Show(strFileName:=outputElement.Output) End Sub - ucrWebview.LoadHtmlFile(outputElement.HtmlOutput) + ucrWebview.LoadHtmlFile(outputElement.Output) panel.Controls.Add(linkLabel) panel.Controls.Add(ucrWebview) @@ -244,7 +281,7 @@ Public Class ucrOutputPage AddHandler linkLabel.Click, Sub() 'display the html output in default browser Cursor = Cursors.WaitCursor - Process.Start(outputElement.HtmlOutput) + Process.Start(outputElement.Output) Cursor = Cursors.Default End Sub @@ -255,7 +292,7 @@ Public Class ucrOutputPage 'display the html output in default browser Cursor = Cursors.WaitCursor - Process.Start(outputElement.HtmlOutput) + Process.Start(outputElement.Output) Cursor = Cursors.Default End If @@ -334,7 +371,7 @@ Public Class ucrOutputPage If SelectedElements.Count = 1 AndAlso SelectedElements(0).OutputType = OutputType.ImageOutput Then Dim element As clsOutputElement = SelectedElements(0) Clipboard.Clear() - Clipboard.SetImage(GetBitmapFromFile(element.ImageOutput)) + Clipboard.SetImage(GetBitmapFromFile(element.Output)) Return True End If Return False @@ -345,11 +382,12 @@ Public Class ucrOutputPage Case OutputType.Script FillRichTextBoxWithFormatedRScript(richText, element.FormattedRScript) Case OutputType.TextOutput - AddFormatedTextToRichTextBox(richText, element.StringOutput, OutputFont.ROutputFont, OutputFont.ROutputColour) + 'todo. check if output is file or not. if file, read the contents of the file + AddFormatedTextToRichTextBox(richText, element.Output, OutputFont.ROutputFont, OutputFont.ROutputColour) Case OutputType.ImageOutput Clipboard.Clear() 'todo. instead of copy paste, add image to rtf directly from file? - Clipboard.SetImage(GetBitmapFromFile(element.ImageOutput)) + Clipboard.SetImage(GetBitmapFromFile(element.Output)) richText.Paste() End Select richText.AppendText(Environment.NewLine) diff --git a/instat/UserControl/ucrOutputPages.vb b/instat/UserControl/ucrOutputPages.vb index bb94d673be4..ef44609f511 100644 --- a/instat/UserControl/ucrOutputPages.vb +++ b/instat/UserControl/ucrOutputPages.vb @@ -223,7 +223,7 @@ Public Class ucrOutputPages _outputLogger.DeleteOutputFromMainList(element) Next _selectedOutputPage.ClearAllOutputs() - For Each output In _outputLogger.Output + For Each output In _outputLogger.OutputElements _selectedOutputPage.AddNewOutput(output) Next EnableDisableTopButtons() @@ -244,8 +244,8 @@ Public Class ucrOutputPages ''' Public Sub ClearOutputWindow() tabControl.SelectedIndex = 0 - For i = _outputLogger.Output.Count - 1 To 0 Step -1 - _outputLogger.DeleteOutputFromMainList(_outputLogger.Output(i)) + For i = _outputLogger.OutputElements.Count - 1 To 0 Step -1 + _outputLogger.DeleteOutputFromMainList(_outputLogger.OutputElements(i)) Next _selectedOutputPage.ClearAllOutputs() EnableDisableTopButtons() diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index dcd6b5db468..28380d7c9f8 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -740,6 +740,7 @@ Public Class RLink ''' ''' This method executes the R script and displays the output. The ''' output may be displayed as text, graph or html (see ). + ''' Any R script that is necessary for reproducibility has to be run through this subroutine. ''' ''' is the R script to execute. ''' defines how to display the R output. todo deprecate this. @@ -780,7 +781,7 @@ Public Class RLink ''' . ''' if false and an exception is raised then open a message box that ''' displays the exception message. - ''' if true and the script produces and output, the output will be added + ''' if true and the script produces and output, the output will be added ''' in the output viewer, if false, the output will be displayed in a different viewer. ''' displays the exception message. '''-------------------------------------------------------------------------------------------- @@ -791,7 +792,7 @@ Public Class RLink Optional bShowWaitDialogOverride As Nullable(Of Boolean) = Nothing, Optional bUpdateGrids As Boolean = True, Optional bSilent As Boolean = False, - Optional bAddOutputInViewer As Boolean = True) + Optional bAddOutputInInternalViewer As Boolean = True) 'if there is no script to run then just ignore and exit sub If String.IsNullOrWhiteSpace(strScript) Then @@ -806,8 +807,6 @@ Public Class RLink txtLog.Text = txtLog.Text & strScriptWithComment & Environment.NewLine End If - clsOutputLogger.AddRScript(strScriptWithComment) - 'TODO SJL 20/04/20 - is the commented out check below needed? 'If strScript.Length > 2000 Then ' MsgBox("The following command cannot be run because it exceeds the character limit of 2000 characters for a command in R-Instat." & Environment.NewLine & strScript & Environment.NewLine & Environment.NewLine & "It may be possible to run the command directly in R.", MsgBoxStyle.Critical, "Cannot run command") @@ -820,17 +819,17 @@ Public Class RLink Dim strFilePathName As String = GetFileOutput(strScript, bSilent, bSeparateThread, bShowWaitDialogOverride) If Not String.IsNullOrEmpty(strFilePathName) Then - clsOutputLogger.AddFileOutput(strFilePathName, bAddOutputInViewer) + clsOutputLogger.AddOutput(strScriptWithComment, strFilePathName, True, bAddOutputInInternalViewer) End If ElseIf iCallType = 0 Then - 'todo. remove this block? - 'if script output should be ignored. todo. deprecated + 'if script output should be ignored. todo. deprecate this block after implementing correctly Evaluate(strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) + clsOutputLogger.AddOutput(strScriptWithComment, "", False, bAddOutputInInternalViewer) ElseIf iCallType = 1 OrElse iCallType = 4 Then - 'todo remove this block? + 'todo. icall types 1 and 4 seem not to be used anywhere? remove this block? 'else if script output should be stored in a temp variable - ' TODO SJL In RInstat, iCallType only seems to be 0, 2 or 3. Are call types 1 and 4 used? + ' TODO SJL In RInstat, iCallType only seems to be 0, 2 or 3. Are icall types 1 and 4 used? Dim strTempAssignTo As String = ".temp_val" 'TODO check this is valid syntax in all cases @@ -841,7 +840,7 @@ Public Class RLink Dim strOutput As String = String.Join(Environment.NewLine, expTemp.AsCharacter()) & Environment.NewLine ' if there's something to output If strOutput IsNot Nothing AndAlso strOutput <> "" Then - clsOutputLogger.AddStringOutput(strOutput) + clsOutputLogger.AddOutput(strScriptWithComment, strOutput, False, bAddOutputInInternalViewer) End If End If @@ -864,7 +863,7 @@ Public Class RLink If bSuccess Then Dim strFilePathName As String = GetFileOutput("view_object(object = " & arrRScriptLines.Last() & " , object_format = 'text' )", bSilent, bSeparateThread, bShowWaitDialogOverride) If Not String.IsNullOrEmpty(strFilePathName) Then - clsOutputLogger.AddFileOutput(strFilePathName, bAddOutputInViewer) + clsOutputLogger.AddOutput(strScriptWithComment, strFilePathName, True, bAddOutputInInternalViewer) End If End If End If @@ -999,7 +998,7 @@ Public Class RLink strGlobalGraphDisplayOption = Me.strGraphDisplayOption Me.strGraphDisplayOption = "view_R_viewer" clsLastGraph.AddParameter("print_graph", "TRUE", iPosition:=0) - RunScript(clsLastGraph.ToScript(), iCallType:=3, bAddOutputInViewer:=False, strComment:="View last graph", bSeparateThread:=False) + RunScript(clsLastGraph.ToScript(), iCallType:=3, bAddOutputInInternalViewer:=False, strComment:="View last graph", bSeparateThread:=False) 'restore the graph display option Me.strGraphDisplayOption = strGlobalGraphDisplayOption End Sub diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 9aa0a9a3e4d..09e05d170c5 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -2116,7 +2116,7 @@ Public Class frmMain clsViewObjectFunction.SetRCommand("view_object") clsViewObjectFunction.AddParameter("object", clsRFunctionParameter:=clsLastGraph) clsViewObjectFunction.AddParameter("object_format", strParameterValue:=Chr(34) & RObjectFormat.Image & Chr(34)) - clsRLink.RunScript(clsLastGraph.ToScript(), strComment:="View last graph", bAddOutputInViewer:=False, bSeparateThread:=False) + clsRLink.RunScript(clsLastGraph.ToScript(), strComment:="View last graph", bAddOutputInInternalViewer:=False, bSeparateThread:=False) End Sub @@ -2137,7 +2137,7 @@ Public Class frmMain clsViewObjectFunction.AddParameter("object", clsRFunctionParameter:=clsInteractivePlot) clsViewObjectFunction.AddParameter("object_format", strParameterValue:=Chr(34) & RObjectFormat.Html & Chr(34)) - clsRLink.RunScript(clsViewObjectFunction.ToScript(), strComment:="View last graph as plotly", bAddOutputInViewer:=False, bSeparateThread:=False) + clsRLink.RunScript(clsViewObjectFunction.ToScript(), strComment:="View last graph as plotly", bAddOutputInInternalViewer:=False, bSeparateThread:=False) End Sub From 1d19a524d777e54b9ecfe7486710b6caaedf7e1d Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Thu, 8 Dec 2022 15:16:41 +0000 Subject: [PATCH 50/88] added 32 bit to msbuild --- .github/workflows/CreateInstaller.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 0c655a0d836..7242f4547d6 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -76,18 +76,18 @@ jobs: # Create the app package by building and packaging the Windows Application Packaging project - name: Create the app package - run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:PlatformTarget=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always Appx_Bundle_Platforms: x86|x64 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} - # Build 32 bit installer without R - #- name: Building the installer 32bit - No R - # run: | - # "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" - # shell: cmd + #Build 32 bit installer without R + - name: Building the installer 32bit - No R + run: | + "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" + shell: cmd # upload 32 bit installer without R #- name: Upload the 32 bit installer as an artifact From 66c58ecef66073b55f229c63e2741027bdb873dc Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Thu, 8 Dec 2022 15:28:31 +0000 Subject: [PATCH 51/88] Update CreateInstaller.yml --- .github/workflows/CreateInstaller.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 7242f4547d6..4f653929e56 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -76,10 +76,10 @@ jobs: # Create the app package by building and packaging the Windows Application Packaging project - name: Create the app package - run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:PlatformTarget=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always - Appx_Bundle_Platforms: x86|x64 + Appx_Bundle_Platforms: x86 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} From b45cf3dae7147e7e4d5edabec24eba6daf807e19 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Thu, 8 Dec 2022 15:37:33 +0000 Subject: [PATCH 52/88] Update CreateInstaller.yml --- .github/workflows/CreateInstaller.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 4f653929e56..8f367e75227 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -42,11 +42,11 @@ jobs: # Add MSBuild to the PATH: https://github.com/microsoft/setup-msbuild - name: Setup MSBuild.exe - uses: microsoft/setup-msbuild@v1.0.2 + uses: microsoft/setup-msbuild@v1.1.3 # set up and restore NuGet packages - name: Setup NuGet - uses: NuGet/setup-nuget@v1.0.6 + uses: NuGet/setup-nuget@v1.1.1 - name: Restore NuGet run: nuget restore $env:Solution_Name @@ -79,7 +79,7 @@ jobs: run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always - Appx_Bundle_Platforms: x86 + Appx_Bundle_Platforms: x64|x86 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} From f38a7404ee0d09ae160378dee821db9fa8bba30e Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Thu, 8 Dec 2022 16:33:15 +0000 Subject: [PATCH 53/88] Update CreateInstaller.yml --- .github/workflows/CreateInstaller.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 8f367e75227..6df27e4f7aa 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -82,6 +82,15 @@ jobs: Appx_Bundle_Platforms: x64|x86 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} + + # Create the app package by building and packaging the Windows Application Packaging project + - name: Create the app package2 + run: msbuild Solution_Name /p:Configuration=release /p:PlatformTarget=x86 /p:Platform=x86 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + env: + Appx_Bundle: Always + Appx_Bundle_Platforms: x64|x86 + Appx_Package_Build_Mode: StoreUpload + Configuration: ${{ matrix.configuration }} #Build 32 bit installer without R - name: Building the installer 32bit - No R From 74bb24e3f274dee89abdd12256d7e4e2cba0b4d7 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Thu, 8 Dec 2022 16:39:54 +0000 Subject: [PATCH 54/88] Update CreateInstaller.yml --- .github/workflows/CreateInstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 6df27e4f7aa..b1b4717f6a9 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -85,7 +85,7 @@ jobs: # Create the app package by building and packaging the Windows Application Packaging project - name: Create the app package2 - run: msbuild Solution_Name /p:Configuration=release /p:PlatformTarget=x86 /p:Platform=x86 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild Instat.sln /p:Configuration=release /p:PlatformTarget=x86 /p:Platform=x86 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always Appx_Bundle_Platforms: x64|x86 From ba44cbcff7b86bc77a5fda82a31de7b3e317e90a Mon Sep 17 00:00:00 2001 From: patowhiz Date: Fri, 9 Dec 2022 10:07:24 +0300 Subject: [PATCH 55/88] comments additions --- instat/Model/Output/clsOutputElement.vb | 13 ++++++++++--- instat/frmMain.vb | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/instat/Model/Output/clsOutputElement.vb b/instat/Model/Output/clsOutputElement.vb index 52e82c5d3f6..9d38e901cfd 100644 --- a/instat/Model/Output/clsOutputElement.vb +++ b/instat/Model/Output/clsOutputElement.vb @@ -15,6 +15,7 @@ ' along with this program. If not, see . Imports System.IO Imports RScript + ''' ''' Output element for an R script. ''' Must contain an R script. The output itself is optional depending on whether the script produces the an output or not. @@ -72,14 +73,20 @@ Public Class clsOutputElement Return Me.MemberwiseClone End Function - Public Sub SetContent(strScript As String, outputType As OutputType, Optional strOutputFileName As String = "") + ''' + ''' Sets the contents of the output element + ''' + ''' R script producing the output + ''' Type of output + ''' Output produced, can be file name or string value + Public Sub SetContent(strScript As String, outputType As OutputType, Optional strOutput As String = "") _strScript = strScript _outputType = outputType - _strOutput = strOutputFileName + _strOutput = strOutput End Sub ''' - ''' Holds formated R Script, split into R Script Elements + ''' Gets formated R Script, split into R Script Elements ''' ''' Public ReadOnly Property FormattedRScript As List(Of clsRScriptElement) diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 09e05d170c5..f784c76b873 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -2147,6 +2147,7 @@ Public Class frmMain clsLastGraph.SetRCommand(clsRLink.strInstatDataObject & "$get_last_object") clsLastGraph.AddParameter("object_type_label", strParameterValue:=Chr(34) & RObjectTypeLabel.Graph & Chr(34), iPosition:=0) clsLastGraph.AddParameter("as_file", strParameterValue:="FALSE", iPosition:=1) + clsLastGraph.SetAssignTo("last_graph") clsPrintGraph.SetRCommand("print") clsPrintGraph.AddParameter("x", clsRFunctionParameter:=clsLastGraph, iPosition:=0) From 7c13c27435882f12ad88c9570936da21639f0b15 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Fri, 9 Dec 2022 10:49:20 +0300 Subject: [PATCH 56/88] added comments --- instat/clsRLink.vb | 1 + instat/frmMain.vb | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index 28380d7c9f8..386658b9fcf 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -823,6 +823,7 @@ Public Class RLink End If ElseIf iCallType = 0 Then + 'this block is executed during the startup of R-instant. 'if script output should be ignored. todo. deprecate this block after implementing correctly Evaluate(strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) clsOutputLogger.AddOutput(strScriptWithComment, "", False, bAddOutputInInternalViewer) diff --git a/instat/frmMain.vb b/instat/frmMain.vb index f784c76b873..40e6827e78f 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -2116,6 +2116,8 @@ Public Class frmMain clsViewObjectFunction.SetRCommand("view_object") clsViewObjectFunction.AddParameter("object", clsRFunctionParameter:=clsLastGraph) clsViewObjectFunction.AddParameter("object_format", strParameterValue:=Chr(34) & RObjectFormat.Image & Chr(34)) + + 'todo. should this script be logged? clsRLink.RunScript(clsLastGraph.ToScript(), strComment:="View last graph", bAddOutputInInternalViewer:=False, bSeparateThread:=False) End Sub @@ -2137,6 +2139,7 @@ Public Class frmMain clsViewObjectFunction.AddParameter("object", clsRFunctionParameter:=clsInteractivePlot) clsViewObjectFunction.AddParameter("object_format", strParameterValue:=Chr(34) & RObjectFormat.Html & Chr(34)) + 'todo. should this script be logged? clsRLink.RunScript(clsViewObjectFunction.ToScript(), strComment:="View last graph as plotly", bAddOutputInInternalViewer:=False, bSeparateThread:=False) End Sub @@ -2147,12 +2150,16 @@ Public Class frmMain clsLastGraph.SetRCommand(clsRLink.strInstatDataObject & "$get_last_object") clsLastGraph.AddParameter("object_type_label", strParameterValue:=Chr(34) & RObjectTypeLabel.Graph & Chr(34), iPosition:=0) clsLastGraph.AddParameter("as_file", strParameterValue:="FALSE", iPosition:=1) - clsLastGraph.SetAssignTo("last_graph") + clsLastGraph.SetAssignToObject("last_graph") clsPrintGraph.SetRCommand("print") clsPrintGraph.AddParameter("x", clsRFunctionParameter:=clsLastGraph, iPosition:=0) - clsRLink.RunScript(clsPrintGraph.ToScript(), strComment:="View last graph in R viewer", bSeparateThread:=False) + Dim strScript1 As String = "" + Dim strScript2 As String = clsPrintGraph.ToScript(strScript1) + + 'todo. should this script be logged? + clsRLink.RunScript(strScript1 & strScript2, strComment:="View last graph in R viewer", bSeparateThread:=False) End Sub From 9f437aad8387ea108dafe465a7e6a98048663f81 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Fri, 9 Dec 2022 11:23:58 +0300 Subject: [PATCH 57/88] ammeded comments --- instat/clsRLink.vb | 1 - 1 file changed, 1 deletion(-) diff --git a/instat/clsRLink.vb b/instat/clsRLink.vb index 386658b9fcf..28380d7c9f8 100644 --- a/instat/clsRLink.vb +++ b/instat/clsRLink.vb @@ -823,7 +823,6 @@ Public Class RLink End If ElseIf iCallType = 0 Then - 'this block is executed during the startup of R-instant. 'if script output should be ignored. todo. deprecate this block after implementing correctly Evaluate(strScript, bSilent:=bSilent, bSeparateThread:=bSeparateThread, bShowWaitDialogOverride:=bShowWaitDialogOverride) clsOutputLogger.AddOutput(strScriptWithComment, "", False, bAddOutputInInternalViewer) From 3b573d5bd85666c0f00e4c3ee5de64eae342bdd9 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 9 Dec 2022 09:42:25 +0000 Subject: [PATCH 58/88] updated 32 bit builds --- .github/workflows/CreateInstaller.yml | 96 ++++++++++++++------------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index b1b4717f6a9..6a923bf3698 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -29,8 +29,7 @@ jobs: # set variables env: - Solution_Name: Instat.sln # Replace with your solution name, i.e. MyWpfApp.sln. - Test_Project_Path: instat\instat.vbproj # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj. + Solution_Name: Instat.sln GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} # check out r-instat @@ -75,36 +74,39 @@ jobs: version: "${{ inputs.major_version }}.${{ inputs.minor_version }}.${{ inputs.build_no }}" #.${env:BUILD_NUMBER}" # Create the app package by building and packaging the Windows Application Packaging project + #Same output for 64bit and 32 bit - name: Create the app package - run: msbuild $env:Test_Project_Path /p:Configuration=$env:Configuration /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} + run: msbuild $env:Solution_Name /p:Configuration=$env:Configuration /p:AppxBundlePlatforms=$env:Appx_Bundle_Platforms /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} env: Appx_Bundle: Always Appx_Bundle_Platforms: x64|x86 Appx_Package_Build_Mode: StoreUpload Configuration: ${{ matrix.configuration }} - # Create the app package by building and packaging the Windows Application Packaging project - - name: Create the app package2 - run: msbuild Instat.sln /p:Configuration=release /p:PlatformTarget=x86 /p:Platform=x86 /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.Pfx_Key }} - env: - Appx_Bundle: Always - Appx_Bundle_Platforms: x64|x86 - Appx_Package_Build_Mode: StoreUpload - Configuration: ${{ matrix.configuration }} + # Create directory and copy over application to a 32bit folder + # There is no difference in R instat other than the packaged R + - name: Make Library directory 64 bit + run: | + MKDIR instat\bin\x64\Release\ + + - name: Copy R-Instat Data 64 bit + run: | + ROBOCOPY instat\bin\Release\ instat\bin\x64\Release\ /E + continue-on-error: true - #Build 32 bit installer without R + # Build 32 bit installer without R - name: Building the installer 32bit - No R run: | "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" shell: cmd - + # upload 32 bit installer without R - #- name: Upload the 32 bit installer as an artifact - # uses: actions/upload-artifact@v2 - # if: ${{ github.event_name != 'pull_request' }} - # with: - # path: "Output/R-Instat_0.7.4_Installer_32.exe" - # name: rinstat32NoR-innosetup + - name: Upload the 32 bit installer as an artifact + uses: actions/upload-artifact@v2 + if: ${{ github.event_name != 'pull_request' }} + with: + path: "Output/R-Instat_Installer_32.exe" + name: rinstat32NoR-innosetup # Build 64 bit installer without R - name: Building the installer 64bit - No R @@ -122,7 +124,7 @@ jobs: # check out R-Instat Data - name: Checkout Instat Data - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: ' africanmathsinitiative/R-Instat-Data' fetch-depth: 0 @@ -139,18 +141,18 @@ jobs: continue-on-error: true # Create directory and copy over InstatData (32bit) - #- name: Make Library directory 32 bit - # run: | - # MKDIR instat\bin\x64\Release\static\Library\ + - name: Make Library directory 32 bit + run: | + MKDIR instat\bin\x64\Release\static\Library\ - #- name: Copy R-Instat Data 32 bit - # run: | - # ROBOCOPY InstatData\data\*.* instat\bin\x64\Release\static\Library\ /E - # continue-on-error: true + - name: Copy R-Instat Data 32 bit + run: | + ROBOCOPY InstatData\data\*.* instat\bin\x64\Release\static\Library\ /E + continue-on-error: true # check out R for R-Instat - name: Checkout R for R-Instat - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: 'ChrisMarsh82/R-RInstat' fetch-depth: 0 @@ -161,30 +163,30 @@ jobs: ROBOCOPY R-RInstat\64Bit\ instat\bin\Release\static\ /E continue-on-error: true - #- name: Copy R 32 bit - # run: | - # ROBOCOPY R-RInstat\32Bit\ instat\bin\x64\Release\static\ /E - # continue-on-error: true + - name: Copy R 32 bit + run: | + ROBOCOPY R-RInstat\32Bit\ instat\bin\x64\Release\static\ /E + continue-on-error: true - name: Install R packages (64 bit) run: | "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" shell: cmd - #- name: Install R packages (32 bit) - # run: | - # "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - # shell: cmd + - name: Install R packages (32 bit) + run: | + "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + shell: cmd - name: Building the installer 64bit - With R run: | "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_64bit.iss" shell: cmd - #- name: Building the installer 32bit - With R - # run: | - # "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" - # shell: cmd + - name: Building the installer 32bit - With R + run: | + "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" + shell: cmd - name: Upload the 64 bit installer with R as an artifact uses: actions/upload-artifact@v2 @@ -192,12 +194,12 @@ jobs: with: path: "Output/R-Instat_Installer_64.exe" name: rinstat64WithR-innosetup - - #- name: Upload the 32 bit installer with R as an artifact - # uses: actions/upload-artifact@v2 - # if: ${{ github.event_name != 'pull_request' }} - # with: - # path: "Output/R-Instat_Installer_32.exe" - # name: rinstat64WithR-innosetup + + - name: Upload the 32 bit installer with R as an artifact + uses: actions/upload-artifact@v2 + if: ${{ github.event_name != 'pull_request' }} + with: + path: "Output/R-Instat_Installer_32.exe" + name: rinstat64WithR-innosetup From 029c9805d8a2e78b3b1b3cbd996d240d0f018770 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 9 Dec 2022 10:08:51 +0000 Subject: [PATCH 59/88] changed type from both to win.binary Testing to see if all packages can be installed via win.binary --- instat/static/InstatObject/R/InstallPackages.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/InstallPackages.R b/instat/static/InstatObject/R/InstallPackages.R index 409f075fecd..cc821299a5b 100644 --- a/instat/static/InstatObject/R/InstallPackages.R +++ b/instat/static/InstatObject/R/InstallPackages.R @@ -93,7 +93,7 @@ packs <- c("abind", "agricolae", "agridat", "AlgDesign", "animation", "xopen", "xtable", "xts", "yaml", "yulab.utils", "zip", "zoo", "zyp") -install.packages(packs, dependencies = FALSE, repos='https://cloud.r-project.org', type="both") +install.packages(packs, dependencies = FALSE, repos='https://cloud.r-project.org', type="win.binary") #install development packages not on CRAN devtools::install_github("ianmoran11/mmtable2") From 58801d44cc528c9920443d3bad1a4080ae70e4bd Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 9 Dec 2022 10:37:47 +0000 Subject: [PATCH 60/88] added revision number to build --- .github/workflows/CreateInstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 6a923bf3698..1d311bcf919 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -71,7 +71,7 @@ jobs: path: instat\My Project\AssemblyInfo.vb # optional, default is ${{ github.workspace }} # Version number to set on [AssemblyVersion] and [AssemblyFileVersion] attributes of AssemblyInfo.cs/.vb files - version: "${{ inputs.major_version }}.${{ inputs.minor_version }}.${{ inputs.build_no }}" #.${env:BUILD_NUMBER}" + version: "${{ inputs.major_version }}.${{ inputs.minor_version }}.${{ inputs.build_no }}.${env:BUILD_NUMBER}" # Create the app package by building and packaging the Windows Application Packaging project #Same output for 64bit and 32 bit From b82158cd304e39063f5f3757c994112b809ea9a7 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 9 Dec 2022 13:38:13 +0000 Subject: [PATCH 61/88] Update CreateInstaller.yml deleted files to free up space --- .github/workflows/CreateInstaller.yml | 32 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 1d311bcf919..dbb5a4c4886 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -171,30 +171,38 @@ jobs: - name: Install R packages (64 bit) run: | "instat\bin\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - shell: cmd - - - name: Install R packages (32 bit) - run: | - "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" - shell: cmd + shell: cmd - name: Building the installer 64bit - With R run: | "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_64bit.iss" shell: cmd - - name: Building the installer 32bit - With R - run: | - "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" - shell: cmd - - name: Upload the 64 bit installer with R as an artifact uses: actions/upload-artifact@v2 if: ${{ github.event_name != 'pull_request' }} with: path: "Output/R-Instat_Installer_64.exe" name: rinstat64WithR-innosetup - + + - name: Remove 64 bit release files to free up space + run: | + rmdir /s "instat\bin\Release\" + + - name: Remove 64 innosetup to free up space + run: | + del "Output/R-Instat_Installer_64.exe" + + - name: Install R packages (32 bit) + run: | + "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + shell: cmd + + - name: Building the installer 32bit - With R + run: | + "%programfiles(x86)%\Inno Setup 6\iscc.exe" "inno_install_script_32bit.iss" + shell: cmd + - name: Upload the 32 bit installer with R as an artifact uses: actions/upload-artifact@v2 if: ${{ github.event_name != 'pull_request' }} From 15723bb98aa9c78ed7df037a8b56ef5d1147f0e8 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 9 Dec 2022 14:14:28 +0000 Subject: [PATCH 62/88] Update CreateInstaller.yml updated delete command --- .github/workflows/CreateInstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index dbb5a4c4886..218f33ec3a7 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -187,7 +187,7 @@ jobs: - name: Remove 64 bit release files to free up space run: | - rmdir /s "instat\bin\Release\" + Remove-Item "instat\bin\Release\" -Recurse - name: Remove 64 innosetup to free up space run: | From 54643cde8bc0c86a8255bd78a47ce7e394b6a2c4 Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Sun, 11 Dec 2022 11:33:29 +0100 Subject: [PATCH 63/88] Update instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb --- instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 59394cc940f..4eb34576c80 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -87,7 +87,7 @@ Public MustInherit Class ucrReoGrid 'in the second condition we check if all data frames in the data book 'have the same order positions with all data frame sheets in the grid - 'if not this check will return False which means the data frames in the data book are reordeder + 'if not this check will return False which means the data frames in the data book are reordered If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). SequenceEqual(grdData.Worksheets.Select(Function(x) x.Name).ToList()) Then 'reorder the worksheets based on the filled list From e4b1bc43723c53f96240497ec39174d4bad29c23 Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Sun, 11 Dec 2022 11:33:40 +0100 Subject: [PATCH 64/88] Update instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb --- instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb index bd84c0bd62d..19476abb9be 100644 --- a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb +++ b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb @@ -98,7 +98,7 @@ Public MustInherit Class ucrLinuxGrid 'in the second condition we check if all data frames in the data book 'have the same order positions with all data frame sheets in the grid - 'if not this check will return False which means the data frames in the data book are reordeder + 'if not this check will return False which means the data frames in the data book are reordered If lstWorkSheetsFound.Count > 1 AndAlso Not _clsDataBook.DataFrames.Select(Function(x) x.strName).ToList(). SequenceEqual(tcTabs.Controls.OfType(Of TabPage).Select(Function(x) x.Text).ToList) Then 'reorder the worksheets based on the filled list From daf8882bd9ee210636481104f01a0bf5e14bdcf1 Mon Sep 17 00:00:00 2001 From: Antoine Ntalumeso Date: Sun, 11 Dec 2022 13:44:59 +0300 Subject: [PATCH 65/88] Added the summary hearder --- instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb | 3 +++ instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb | 3 +++ 2 files changed, 6 insertions(+) diff --git a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb index bd84c0bd62d..80968bf5b9b 100644 --- a/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb +++ b/instat/UserControls/DataGrid/Linux/ucrLinuxGrid.vb @@ -82,6 +82,9 @@ Public MustInherit Class ucrLinuxGrid Return New clsWorksheetAdapter(tab) End Function + ''' + ''' Reorder the worksheets + ''' Private Sub ReOrderWorksheets(strCurrWorksheet As String) Implements IGrid.ReOrderWorksheets 'assuming the databook will always have all the data frames 'and the grid may not have all the data frame worksheets equivalent diff --git a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb index 59394cc940f..63ff23a09c1 100644 --- a/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb +++ b/instat/UserControls/DataGrid/ReoGrid/ucrReoGrid.vb @@ -71,6 +71,9 @@ Public MustInherit Class ucrReoGrid Return New clsWorksheetAdapter(fillWorkSheet) End Function + ''' + ''' Reorder the worksheets + ''' Private Sub ReOrderWorksheets(strCurrWorksheet As String) Implements IGrid.ReOrderWorksheets 'assuming the databook will always have all the data frames 'and the grid may not have all the data frame worksheets equivalent From 0b56d0ab9f933ada5a6a6c025e861e8a79597c75 Mon Sep 17 00:00:00 2001 From: patowhiz Date: Mon, 12 Dec 2022 11:37:29 +0200 Subject: [PATCH 66/88] Update instat/Model/Output/clsOutputElement.vb Co-authored-by: lloyddewit <57253949+lloyddewit@users.noreply.github.com> --- instat/Model/Output/clsOutputElement.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/Model/Output/clsOutputElement.vb b/instat/Model/Output/clsOutputElement.vb index 9d38e901cfd..8fbb663af65 100644 --- a/instat/Model/Output/clsOutputElement.vb +++ b/instat/Model/Output/clsOutputElement.vb @@ -86,7 +86,7 @@ Public Class clsOutputElement End Sub ''' - ''' Gets formated R Script, split into R Script Elements + ''' Gets formatted R Script, split into R Script Elements ''' ''' Public ReadOnly Property FormattedRScript As List(Of clsRScriptElement) From e1516b9b4586afcc096f87b82072f3cd70fc8cc8 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 12 Dec 2022 10:28:19 +0000 Subject: [PATCH 67/88] Update CreateInstaller.yml Issue with 32bit version being in the wrong folder --- .github/workflows/CreateInstaller.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index 218f33ec3a7..e305cf9b24e 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -87,11 +87,11 @@ jobs: # There is no difference in R instat other than the packaged R - name: Make Library directory 64 bit run: | - MKDIR instat\bin\x64\Release\ + MKDIR instat\bin\x86\Release\ - name: Copy R-Instat Data 64 bit run: | - ROBOCOPY instat\bin\Release\ instat\bin\x64\Release\ /E + ROBOCOPY instat\bin\Release\ instat\bin\x86\Release\ /E continue-on-error: true # Build 32 bit installer without R @@ -143,11 +143,11 @@ jobs: # Create directory and copy over InstatData (32bit) - name: Make Library directory 32 bit run: | - MKDIR instat\bin\x64\Release\static\Library\ + MKDIR instat\bin\x86\Release\static\Library\ - name: Copy R-Instat Data 32 bit run: | - ROBOCOPY InstatData\data\*.* instat\bin\x64\Release\static\Library\ /E + ROBOCOPY InstatData\data\*.* instat\bin\x86\Release\static\Library\ /E continue-on-error: true # check out R for R-Instat @@ -165,7 +165,7 @@ jobs: - name: Copy R 32 bit run: | - ROBOCOPY R-RInstat\32Bit\ instat\bin\x64\Release\static\ /E + ROBOCOPY R-RInstat\32Bit\ instat\bin\x86\Release\static\ /E continue-on-error: true - name: Install R packages (64 bit) @@ -195,7 +195,7 @@ jobs: - name: Install R packages (32 bit) run: | - "instat\bin\x64\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" + "instat\bin\x86\Release\static\R\bin\Rscript.exe" "instat\static\InstatObject\R\InstallPackages.R" shell: cmd - name: Building the installer 32bit - With R From 7f7ca4d783a2c85772119fc29977b9e1a73916a0 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 12 Dec 2022 10:29:16 +0000 Subject: [PATCH 68/88] Update inno_install_script_32bit.iss Issue with 32 bit folder being wrong --- inno_install_script_32bit.iss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inno_install_script_32bit.iss b/inno_install_script_32bit.iss index 9c7689b98b3..a1983eb54c6 100644 --- a/inno_install_script_32bit.iss +++ b/inno_install_script_32bit.iss @@ -5,7 +5,7 @@ ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppVersion= {#GetStringFileInfo("instat\bin\Release\instat.exe", "FileVersion")} +AppVersion= {#GetStringFileInfo("instat\bin\x86\Release\instat.exe", "FileVersion")} AppId={{979E51D8-9BC4-418F-8D4D-9B44FEA869A6-{#SetupSetting("AppVersion")}} AppName=R-Instat @@ -27,8 +27,8 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; OnlyBelowVersion: 0 [Files] -Source: "instat\bin\x64\Release\instat.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "instat\bin\x64\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "instat\bin\x86\Release\instat.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "instat\bin\x86\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] From 1ea0e514567c6762055708017692a8064abe84b8 Mon Sep 17 00:00:00 2001 From: Chris Marsh <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 12 Dec 2022 11:54:30 +0000 Subject: [PATCH 69/88] Update CreateInstaller.yml --- .github/workflows/CreateInstaller.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CreateInstaller.yml b/.github/workflows/CreateInstaller.yml index e305cf9b24e..368b50bb738 100644 --- a/.github/workflows/CreateInstaller.yml +++ b/.github/workflows/CreateInstaller.yml @@ -208,6 +208,6 @@ jobs: if: ${{ github.event_name != 'pull_request' }} with: path: "Output/R-Instat_Installer_32.exe" - name: rinstat64WithR-innosetup + name: rinstat32WithR-innosetup From e0526814a6820514a8f79479ee7004db45ba6cd4 Mon Sep 17 00:00:00 2001 From: ChrisMarsh82 <84872334+ChrisMarsh82@users.noreply.github.com> Date: Fri, 16 Dec 2022 15:06:50 +0000 Subject: [PATCH 70/88] Added nlog --- instat/NLog.config | 51 + instat/NLog.xsd | 3482 ++ instat/frmMain.vb | 3 +- instat/instat.vbproj | 18 +- instat/packages.config | 1 + packages/NLog.5.1.0/.signature.p7s | Bin 0 -> 11531 bytes packages/NLog.5.1.0/N.png | Bin 0 -> 1903 bytes packages/NLog.5.1.0/lib/net35/NLog.dll | Bin 0 -> 818688 bytes packages/NLog.5.1.0/lib/net35/NLog.xml | 27801 +++++++++++++++ packages/NLog.5.1.0/lib/net45/NLog.dll | Bin 0 -> 846848 bytes packages/NLog.5.1.0/lib/net45/NLog.xml | 28286 +++++++++++++++ packages/NLog.5.1.0/lib/net46/NLog.dll | Bin 0 -> 850432 bytes packages/NLog.5.1.0/lib/net46/NLog.xml | 28326 ++++++++++++++++ .../NLog.5.1.0/lib/netstandard1.3/NLog.dll | Bin 0 -> 763904 bytes .../NLog.5.1.0/lib/netstandard1.3/NLog.xml | 26194 ++++++++++++++ .../NLog.5.1.0/lib/netstandard1.5/NLog.dll | Bin 0 -> 809472 bytes .../NLog.5.1.0/lib/netstandard1.5/NLog.xml | 27149 +++++++++++++++ .../NLog.5.1.0/lib/netstandard2.0/NLog.dll | Bin 0 -> 836096 bytes .../NLog.5.1.0/lib/netstandard2.0/NLog.xml | 27946 +++++++++++++++ 19 files changed, 169254 insertions(+), 3 deletions(-) create mode 100644 instat/NLog.config create mode 100644 instat/NLog.xsd create mode 100644 packages/NLog.5.1.0/.signature.p7s create mode 100644 packages/NLog.5.1.0/N.png create mode 100644 packages/NLog.5.1.0/lib/net35/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/net35/NLog.xml create mode 100644 packages/NLog.5.1.0/lib/net45/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/net45/NLog.xml create mode 100644 packages/NLog.5.1.0/lib/net46/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/net46/NLog.xml create mode 100644 packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/netstandard1.3/NLog.xml create mode 100644 packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/netstandard1.5/NLog.xml create mode 100644 packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll create mode 100644 packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml diff --git a/instat/NLog.config b/instat/NLog.config new file mode 100644 index 00000000000..3257bbb33e6 --- /dev/null +++ b/instat/NLog.config @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/instat/NLog.xsd b/instat/NLog.xsd new file mode 100644 index 00000000000..3425577e3c5 --- /dev/null +++ b/instat/NLog.xsd @@ -0,0 +1,3482 @@ + + + + + + + + + + + + + + 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. + + + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + + + + + + + + + + + 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. + + + + + 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. + + + + + 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 + + + + + Number of batches of P:NLog.Targets.Wrappers.AsyncTargetWrapper.BatchSize to write before yielding into P:NLog.Targets.Wrappers.AsyncTargetWrapper.TimeToSleepBetweenBatches + + + + + Time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + 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. + + + + + Number of log events to be buffered. + + + + + Action to take if the buffer overflows. + + + + + 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. + + + + + Indicates whether to use sliding timeout. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Separator for T:NLog.ScopeContext operation-states-stack. + + + + + Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Whether to include the contents of the T:NLog.ScopeContext properties-dictionary. + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + 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. + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages. + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections. + + + + + SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize. + + + + + Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize + + + + + Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Network address. + + + + + Indicates whether to keep connection open whenever possible. + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine. + + + + + Indicates whether to append newline at the end of log message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Viewer parameter name. + + + + + Layout that should be use to calculate the value for the parameter. + + + + + 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 T:System.Console. + + + + + Indicates whether to send the log messages to the standard error instead of the standard output. + + + + + Indicates whether to auto-flush after M:System.Console.WriteLine + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background color. + + + + + Condition that must be met in order to set the specified foreground and background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + Background color. + + + + + Compile the P:NLog.Targets.ConsoleWordHighlightingRule.Regex? 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 + + + + + Foreground color. + + + + + 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. + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-flush after M:System.Console.WriteLine + + + + + 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 T:System.Console. + + + + + Indicates whether to send the log messages to the standard error instead of the standard output. + + + + + Whether to activate internal buffering to allow batch writing, instead of using M:System.Console.WriteLine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. + + + + + Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. + + + + + Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. + + + + + Name of the connection string (as specified in <connectionStrings> configuration section. + + + + + Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. + + + + + Indicates whether to keep the database connection open between the log events. + + + + + Name of the database provider. + + + + + Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + 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. + + + + + 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. + + + + + Fallback value when result value is not available + + + + + Convert format of the database parameter value. + + + + + Culture used for parsing parameter string-value for type-conversion + + + + + Whether empty value should translate into DbNull. Requires database column to allow NULL values. + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + + + + + + + + + + + + + + + + + + + + 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 T:System.Diagnostics.EventLogEntryType then determined by T:NLog.LogLevel + + + + + 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 P:NLog.Targets.EventLogTarget.MaxMessageLength option. + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether to return to the first target after any successful write. + + + + + Whether to enable batching, but fallback will be handled individually + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Name of the file to write to. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether the footer should be written only when the file is archived. + + + + + Maximum number of archive files that should be kept. + + + + + Maximum days of archive files that should be kept. + + + + + Value of the file size threshold to archive old log file on startup. + + + + + Indicates whether to archive old log file on startup. + + + + + Indicates whether to compress archive files into the zip archive format. + + + + + Name of the file to be used for an archive. + + + + + Is the P:NLog.Targets.FileTarget.ArchiveFileName an absolute or relative path? + + + + + Indicates whether to automatically archive log files every time the specified time passes. + + + + + Value specifying the date format to use when archiving files. + + + + + Size in bytes above which log files will be automatically archived. + + + + + Way file archives are numbered. + + + + + Indicates whether to create directories if they do not exist. + + + + + 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 P:NLog.Targets.FileTarget.FileName an absolute or relative path? + + + + + File attributes (Windows only). + + + + + 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. + + + + + Indicates whether to write BOM (byte order mark) in created files. Defaults to true for UTF-16 and UTF-32 + + + + + Indicates whether to enable log file(s) to be deleted. + + + + + Indicates whether to delete old log file on startup. + + + + + File encoding. + + + + + Indicates whether to replace file contents on each write instead of appending log message at the end. + + + + + Line ending mode. + + + + + 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. + + + + + Maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + Maximum number of seconds that files are kept open. Zero or negative means disabled. + + + + + Indicates whether concurrent writes to the log file by multiple processes on different network hosts. + + + + + Log file buffer size in bytes. + + + + + Indicates whether to automatically flush the file buffers after each log message. + + + + + Indicates whether to keep log file open instead of opening and closing it on each logging event. + + + + + Indicates whether concurrent writes to the log file by multiple processes on the same host. + + + + + 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 + + + + + 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). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Condition expression. Log events who meet this condition will be forwarded to the wrapped target. + + + + + + + + + + + + + + + Name of the target. + + + + + Identifier to perform group-by + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Interval in which messages will be written up to the P:NLog.Targets.Wrappers.LimitingTargetWrapper.MessageLimit number of messages. + + + + + Maximum allowed number of messages written per P:NLog.Targets.Wrappers.LimitingTargetWrapper.Interval. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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). + + + + + Specifies how outgoing email messages will be handled. + + + + + 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. + + + + + Indicates the SMTP client timeout. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Max number of items to have in memory + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + Name of the parameter. + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Fallback value when result value is not available + + + + + Type of the parameter. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize. + + + + + Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize + + + + + Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections. + + + + + Indicates whether to keep connection open whenever possible. + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Network address. + + + + + Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine. + + + + + Indicates whether to append newline at the end of log message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Separator for T:NLog.ScopeContext operation-states-stack. + + + + + Stack separator for log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Whether to include the contents of the T:NLog.ScopeContext properties-dictionary. + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + 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. + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + Instance of T:NLog.Layouts.Log4JXmlEventLayout that is used to format log messages. + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Action that should be taken, when more connections than P:NLog.Targets.NetworkTarget.MaxConnections. + + + + + SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Action that should be taken, when more pending messages than P:NLog.Targets.NetworkTarget.MaxQueueSize. + + + + + Action that should be taken if the message is larger than P:NLog.Targets.NetworkTarget.MaxMessageSize + + + + + Maximum queue size for a single connection. Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Network address. + + + + + Indicates whether to keep connection open whenever possible. + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Size of the connection cache (number of connections which are kept alive). Requires P:NLog.Targets.NetworkTarget.KeepConnection = true + + + + + Maximum simultaneous connections. Requires P:NLog.Targets.NetworkTarget.KeepConnection = false + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Maximum message size in bytes. On limit breach then P:NLog.Targets.NetworkTarget.OnOverflow action is activated. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message P:NLog.Targets.NetworkTarget.NewLine. + + + + + Indicates whether to append newline at the end of log message. + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Indicates whether to perform layout calculation. + + + + + + + + + + + + + + + + Name of the target. + + + + + Default filter to be applied when no specific rule matches. + + + + + + + + + + + + + Condition to be tested. + + + + + Resulting filter to be applied when the condition matches. + + + + + + + + + + + + Name of the target. + + + + + + + + + + + + + + + Name of the target. + + + + + Number of times to repeat each log message. + + + + + + + + + + + + + + + + + Name of the target. + + + + + Whether to enable batching, and only apply single delay when a whole batch fails + + + + + 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. + + + + + + + + + + + + + + Name of the target. + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Forward F:NLog.LogLevel.Fatal to M:System.Diagnostics.Trace.Fail(System.String) (Instead of M:System.Diagnostics.Trace.TraceError(System.String)) + + + + + Force use M:System.Diagnostics.Trace.WriteLine(System.String) independent of T:NLog.LogLevel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in P:NLog.Targets.WebServiceTarget.Headers parameters) + + + + + Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + + + + Value whether escaping be done according to the old NLog style (Very non-standard) + + + + + Value of the User-agent HTTP header. + + + + + Web service URL. + + + + + Proxy configuration when calling web service + + + + + Custom proxy address, include port separated by a colon + + + + + Protocol to be used when calling web service. + + + + + Web service namespace. Only used with Soap. + + + + + Web service method name. Only used with Soap. + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the P:NLog.Targets.WebServiceTarget.Encoding property. This will only work for UTF-8. + + + + + Encoding. + + + + + Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost). + + + + + (optional) root namespace of the XML document, if POST of XML document chosen. (see P:NLog.Targets.WebServiceTarget.Protocol and F:NLog.Targets.WebServiceProtocol.XmlPost). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + Column delimiter. + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + Quote Character. + + + + + Quoting mode. + + + + + Indicates whether CVS should include header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the column. + + + + + Layout of the column. + + + + + Override of Quoting mode + + + + + + + + + + + + + + Option to render the empty object value {} + + + + + Option to suppress the extra spaces in the output json + + + + + + + + + + + + + + + + + + + + + + + Option to include all properties from the log event (as JSON) + + + + + Indicates whether to include contents of the T:NLog.GlobalDiagnosticsContext dictionary. + + + + + Whether to include the contents of the T:NLog.ScopeContext dictionary. + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Option to exclude null/empty properties from the log event (as JSON) + + + + + List of property names to exclude when P:NLog.Layouts.JsonLayout.IncludeAllProperties is true + + + + + How far should the JSON serializer follow object references before backing off + + + + + Option to render the empty object value {} + + + + + Option to suppress the extra spaces in the output json + + + + + + + + + + + + + + + + + + + Name of the attribute. + + + + + Layout that will be rendered as the attribute's value. + + + + + Fallback value when result value is not available + + + + + 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 + + + + + Result value type, for conversion of layout rendering output + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + + + + + + + + + + + + + + + + + + + Option to include all properties from the log events + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Whether to include log4j:NDC in output from T:NLog.ScopeContext nested context. + + + + + Whether to include the contents of the T:NLog.ScopeContext properties-dictionary. + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Log4j:event logger-xml-attribute (Default ${logger}) + + + + + Whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + + + Layout text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the root XML element + + + + + Value inside the root XML element + + + + + Whether to include the contents of the T:NLog.ScopeContext dictionary. + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + 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 + + + + + Option to include all properties from the log event (as XML) + + + + + + + + + + + + + + + + + Name of the attribute. + + + + + Layout that will be rendered as the attribute's value. + + + + + Fallback value when result value is not available + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Whether an attribute with empty value should be included in the output + + + + + Result value type, for conversion of layout rendering output + + + + + + + + + + + + + + + + + + + + + + + + Name of the element + + + + + Whether to include the contents of the T:NLog.ScopeContext dictionary. + + + + + Value inside the element + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + List of property names to exclude when P:NLog.Layouts.XmlElementBase.IncludeAllProperties is true + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + 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 + + + + + Option to include all properties from the log event (as XML) + + + + + + + + + + + + + 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. + + + + + Append FilterCount to the P:NLog.LogEventInfo.Message when an event is no longer filtered + + + + + Insert FilterCount value into P:NLog.LogEventInfo.Properties when an event is no longer filtered + + + + + 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 length of filter values, will truncate if above limit + + + + + How long before a filter expires, and logging is accepted again + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + Max number of unique filter values to expect simultaneously + + + + + Default buffer size for the internal buffers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/instat/frmMain.vb b/instat/frmMain.vb index 9aa0a9a3e4d..aaadfdff7b3 100644 --- a/instat/frmMain.vb +++ b/instat/frmMain.vb @@ -41,6 +41,7 @@ Public Class frmMain Private WithEvents timer As New System.Windows.Forms.Timer Private iAutoSaveDataMilliseconds As Integer Private clsDataBook As clsDataBook + Private Shared ReadOnly Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger() Public ReadOnly Property DataBook As clsDataBook Get Return clsDataBook @@ -76,7 +77,7 @@ Public Class frmMain Private strCurrLang As String Public Sub New() - + Logger.Info("R-Instat started") ' This call is required by the designer. InitializeComponent() diff --git a/instat/instat.vbproj b/instat/instat.vbproj index 14261159918..94e6a745494 100644 --- a/instat/instat.vbproj +++ b/instat/instat.vbproj @@ -34,8 +34,8 @@ Missing Tool Polycarp Testing Instat - 1 - 1.0.0.%2a + 4 + 5.5.5.%2a false true true @@ -117,6 +117,9 @@ app.manifest + + false + False @@ -144,6 +147,9 @@ ..\packages\Microsoft.Win32.Registry.4.5.0\lib\net461\Microsoft.Win32.Registry.dll + + ..\packages\NLog.5.1.0\lib\net46\NLog.dll + @@ -156,6 +162,7 @@ ..\packages\jacobslusser.ScintillaNET.3.6.3\lib\net40\ScintillaNET.dll + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net46\System.Data.SQLite.dll @@ -164,6 +171,7 @@ + ..\packages\System.Security.AccessControl.4.5.0\lib\net461\System.Security.AccessControl.dll @@ -5238,6 +5246,12 @@ + + PreserveNewest + + + Designer + Designer diff --git a/instat/packages.config b/instat/packages.config index df19e918208..32eaa0e7df0 100644 --- a/instat/packages.config +++ b/instat/packages.config @@ -9,6 +9,7 @@ + diff --git a/packages/NLog.5.1.0/.signature.p7s b/packages/NLog.5.1.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..4358b790ab808ad0f4fd526b4b34d81ebeda68fa GIT binary patch literal 11531 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

x>j;-cLdM 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

ZS#+TW)^ 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

*O^`+6oeX_AaOh5q%)l7%Bt@1p zMdG*VPLX0H3Vn6&Q*$;f5T;rg`~Z7azVO9u#yqPFHapo#|gxMTrvGiY3zErVyj|2<0|W^oe}LB z^u8x4rLr#N_-J}d5<91O5W59l<3z*6xCOgn9lXxkipzK!#gx>`tsA_>B=peJuA;X} zF{8M&ZloNpj;2v()w-=>k;_w#?u$?|Vk`D{yLHU$MlwjPnraS5Wx_DmmLDDH~t(H}; zjsF=uzG`??#4`#hxgoxO1DcUR>s4AO_!Zni-dBPzRTLNWF+r?L>63+XB8F3Iv z%}mM|02<6VfyrKX8=GV&xeAS4tQr);pbEmiY4|@L*YtBTAy}5uPTYoO@z& zwxFDN5~La(dRFu4`>aq|S~hPP{APLx@Lkq)f54Z~in8!kOXuoVy23My8O>RrH-EpB zL$?X(Q&;*$;B==uFK`(r6%$bNDFq~j;{q0PHjv)@4=7W;@oT8UABrN`+hG$)+mvt7 zuY7@@4#*Sr2SgEerI8H{o#CTDY5k1*e+QA|<8QPcPmQ;5i0~*5f$Dg#mB(vv=qCjH z=@PytO8tRv#iWL?bT*YDUFnXl<0v2ZkxzicD8sK(9A&h>qrXz6+`1?>^p_-sHxhgE zzaw>WCXPpF!N}9LcvylN3g9B-{LcR*gmmgnlzPqj0f^jMD1pXs)tsFj%A&nxH&8xn zr!o(*Irz5|-u%O0aOQ_!&d`;W+CU39<$VPhh0q6uqY9x9-a3V>BJ#M`1t!ISR`S?N3X}Do2Qh+mu&aPn-cJlo<349SL z0rry;-gcEhoSrA}EVH_u%b-`~)k(pt{;3Rmh^q)3a%I%QEg1}BSc>KkieWTX?lAWB z*DWQ_+SAQ~*%Y!OEInRcYbkC$pCJoRJ&S+kF7m6Kh@Ma!|10U0QbmRG>{&p zLksb12u}3lj1)y9pT7=TK`HcHODaECM<`5BAntZSmA}>_UO%79Q%OjJQ(Q$`MI=o` zcH#l>l1SAe{KOUH-bO!)9DbEW$*d2jg9R`Y6$4vPG3SY-6kH&ZT<|*xLcA7A7NKMj zN);iW2+^3g)N0tO1N#Q)se?BOvi5w|nommkVLN_~F8=r=yzQREDi|@Y1Bs@5z%@ z4I0bv1$vZj9!XFaQJMTKr2Ht1V{A*bP4+@uY1#}>gXlFwYzeH0shPAkl6EZ^S=+l{ z!A;YFx%f@wqFef037jUh|#$ix~1_2>v2(;5P& zC>3N(dsL}dd>*CJS$gzaR_l#NCF2WU#XnIG?W2DDTL<@ZQG~`k7lju8ujitkL;0P! z?tE@}*RcZ-mK))ESvVU-eZW8RK0Kr{KdC`zc^887vx6dKn2TojFKtV6G*(qr%Z zKtyRTkKTFo7_>Yk^#^H4W6kC%DK14+@iD+gZwA#FzD(+6%k?L&eVuD z&>lUafuaFd%IveKJhRVgi0=x36(dKEPA{YHqW9AOP+#(V2;b5ELozXTJ%fJ#ug{zL z)e+?D%yy-Gs1j{XO2}hp55T;yig~%<
Zh|{zIw)h%v2DJtj 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 z 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
$Xf%_H? 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 EKL + + + NLog + + + +

+ 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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). + + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + The assembly that is trying to load. + + + + + Class for providing Nlog configuration xml code from app.config + to + + + + + Overriding base implementation to just store + of the relevant app.config section. + + The XmlReader that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + + + + Override base implementation to return a object + for + instead of the instance. + + + A instance, that has been deserialized from app.config. + + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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). + + + + + Process exit event. + + + + + 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. + + + + 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 the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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. + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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. + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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 + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + Thread identity information (username). + + + + + 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. + + + + + + + + + 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. + + + + + 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) + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + The directory where NLog.dll is located. + + + + + 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. + + + + + + + + + + + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using AggregateException.Flatten() + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + 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. + + + + + + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + 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) + + + + + + + + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + Fluent interface parameter. + Override the default Layout for output + Override the default Encoding for output (Ex. UTF8) + Write to stderr instead of standard output (stdout) + Skip overhead from writing to console, when not available (Ex. running as Windows Service) + Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) + + + + Write to + + + Override the default Layout for output + Force use independent of + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 send the log messages to the standard error instead of the standard output. + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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 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 activate internal buffering to allow batch writing, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + 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. + + + + + + + + + + + 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Sends log messages by email using SMTP protocol. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + 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 + + + + 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 + + + + + + + + + + + + + + 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 in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + Force 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + diff --git a/packages/NLog.5.1.0/lib/net45/NLog.dll b/packages/NLog.5.1.0/lib/net45/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..10984a4f3ab9b6e2bea7a5247da07a7af42d973a GIT binary patch literal 846848 zcmcG%37j28wfNuD-M8;DOEOFDO(x3>Au|+rnIsblA+mG`PGdJ*ipT7gSU3KczsZ*y; zojO%rRej9quXa4gaeV&$^Pi6MNuKg|u>S7;X9vlBBlq?>AIpDzk56_T{q;RgzUbn{ z=oR(wIrVcd8$JKr%P$YF96j%X(fYQ_M=!p7^swVj8oexh_5~BYy@gc~>EjP~oTIxu zr|akU|0yo*31{VKch?%nd2f&7Y_iawJV1Dq@Dn^8XQ75&%eMdm`H{badmRV($xC~w z*Eug0RQbRCjG_YK?xqmGkHAmoT2m55JV zdBF>=B>sZ;MD>!o!gum-)N#(4s5k28161Cm?gtZjzi`z4I~eFh{enwF5H$s!mDX?O z;B9K>vZ4D$uKWpau9I;_xBAZSo||*>3WXl^mb8<3?ucN!d#rHH7RM=+J3Tkrbk}Qk z(RiRuMNgZpos29rIewy~8b?w6@^nn)hQ2PRt0`%&Z^N_F7bMa(tm%$3xW;#uQ4vb- zkBGURQWz^V1t(Cd<@xc1QX22c>zj!xpwDsFE1Du|TRt_eN)r{P7R_vgCsC1)##g!} zGc4$B0ij)*9zAEvj|S9aeU7`!OJ=3yr{Gp-xo2T*77Ap7h3+V?M1=*7D-F}45rv?k zp*9WlNob&gnpdJiBZ|*vlS*lF{9G#Wm8gdXo?NQ5q2`aD%j5hSc=G%!qWsY_R^F+R zn2rYEe>4VY0KgtGKm&0}?e;<3%31WBU2&wQ$ZUb>eHfZ@pGS;3k|^5`WT>r zxoqtl5zr@sHg|WS7S7T&o>Qhj(B1l{H-J+pb_WApW-Fb!Xg&vy>xHKinJHweL13Om z@G&xUVOw1+U1`KYTO4PlJ7hj76xX}v9-f}*TPXAgp)Y1w`kVQzkQ;EqGaxb^lqVDr zo=L1cX%oYm8m;Bti^evG5pN#%;aE*?X(gN7T8b z0T+cGqAlhULXGE2RM?dsY-s9=2L2}cAP|(xLXeaMhRl~F2~~NJXRIpdimL^PuAnC7 ze@LvlL3yY=Y+P5gN$j_)V^k6cGh;kSA2u0zNCDr73ixKCfX?)VNu+9-#8BG+mbfCc z|01*m1(R%3a&Z7FTWN8(Ti#Zb%%egl;&IYEPHf2bl40{xNusDiROH_^K4g9@&r{7$ zc#PG8@##yEv>RvgZJl=s&aeq2wqnTqLZaI5Fb$0CPJg4T=mdqpZT>Msi~W-H?(9vq zz+m1h2Ic_x{m;yO^XZDEu-otbIo_GqCa$fY_ z+KMGk^>Ett(>g|Ff{HE>YI79S&Gx5ds@7kS5Pk=@y9&dY|+#VnstDtkjG z6ou|m{Gk`}EJ)q~TZc;mQ`b72%UBRf@Wx>{=n29G;oi#X0nc1XXwdKXmGoeyKT}

wY8 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

m_DZMq#bT*~8mbrvY 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�bL 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 z%0A+*y**oBTp}jCbCQ^l?D)7q= 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­rY~9lg&pwmlH^bQMd%OzX0Bz?3?80K)^^rt42|0`j-@OxqD6W3#O(?%| zT=J(bF#WHNOMm3T(wCK1Uox}{s{f@W=}iK6LFw;&x+sA2Lcj}2Kf_9V`kP1i3x5}q zetDQE_PvnwpN^#qtrw7fW|$`a{q9@GpBv)oLi<}!pLjh?6Z;-NfBI3=MRLY%tOv&b z;8%(6 zl*A={b%}=@#SF&T#+QCd`yUhcU#7}nLh@7Ee+fx>yc*-mb;Y2b<=gN4pm_3%m<#mWS5%DSb2s!cvkT~)&a^Oxc zNIg{0-+yL@9S^Bwsoe0aJUcJX+x(wrb|dXRo3#0#njK;B0P=3iHEe%L%jaE$Vd)dP z@ch#*en@79>b}pMc2yU)!ejKI&woeHe?Q6j3L8TM76@O*AWiW0L0rZ@eu%rgp776L z|5@>VOBlWNS7`b3m9&2}IRD+KKLE%Gj{!JrgvSVv7=ckd#Axu>-qENZBk;xXNbg^1 zKfV8@_s8`9nciQO98(tVzyGuRbm?0%BIBYgm-FZSTZhV=BQ-qpJ>`R)u%#v6Q4{hCkr@n2!&|0&5c9;Gd^(t+ZSL5$ky7Ku>*_%^p zQBiKW+RH}$Kv|(ThSa+Ckh5)VGC zDs*JzT6$|_YY*5A21OIJ%Kx-fBzHQNxZJVy;O>u6M-tWc8FZRT@yO-9z{NbGXRBCRB&7Iuw-L%7x9PgnB;Be|p9LsK6qJ*3N; zbk)I1t*XiVCb}Lwt0X!2CS&wZW;ZyCQdUmlqu4qxKSePoLszuZaF;mF(+ipxKAV;Q zWN$`hu~sq{QCB~sR-|}YiaM=v7EM*V5pm5iQeh;uW7VOlNZEHfci^c)EBj<|jrL-} z^&48`OCOb)Ej$0p>)TGN^lh_u);V8;FT_l0-}OS?&v175NsAC#brwkOy4{cX0~$g? z5!a;N0o9ClpQDSXZ`zL>`|g-Q>Yj_XK2n5ai#f%b__%z)%4zktx!!AP`t_CYmC z`DPyZ3-(PU{~_{wXei~*L#K$SxN{AE>Plfm)miv-b?Q4Fzmv*U1bb%iZkt2pki2#N zHwW}BR@-(cby>Ss({lc>W5yH@n|2)>=g?ij-_x!&=OR1k$?&?O=@HVkXMF^wKJFAd zcpCI#>eAC0cHVSryI0tytEj9EK2XnlD(H^axM=5Cqqn6&B*~T%mH1lv1pEWGX3vSK zlrQy0Nq+<0ru$w%1&=hqqyZX>98D0a5|33z8eDa%jL$M&b#t4vYkXm#!j}g0Wq}1K yW}#k`d#KM~gW@>EypwT98jK3rp?L5=$NJ@~*XKae>@6P*8I`XOfqwza9=$C9 literal 0 HcmV?d00001 diff --git a/packages/NLog.5.1.0/lib/net45/NLog.xml b/packages/NLog.5.1.0/lib/net45/NLog.xml new file mode 100644 index 00000000000..7a746d4c588 --- /dev/null +++ b/packages/NLog.5.1.0/lib/net45/NLog.xml @@ -0,0 +1,28286 @@ + + + + NLog + + + +

+ 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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). + + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + The assembly that is trying to load. + + + + + Class for providing Nlog configuration xml code from app.config + to + + + + + Overriding base implementation to just store + of the relevant app.config section. + + The XmlReader that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + + + + Override base implementation to return a object + for + instead of the instance. + + + A instance, that has been deserialized from app.config. + + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Pushes new state on the logical context scope stack together with provided properties + + Value to added to the scope stack + Properties being added to the scope dictionary + A disposable object that pops the nested scope state on dispose (including properties). + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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). + + + + + Process exit event. + + + + + 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. + + + + 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 the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as IDictionary-interface + + Message-template-parameters + + + + Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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. + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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' + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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 + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + Thread identity information (username). + + + + + 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. + + + + + + + + + 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. + + + + + 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) + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + The directory where NLog.dll is located. + + + + + 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. + + + + + + + + + + + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + 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. + + + + + + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + 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) + + + + + + + + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message. + List of event-properties + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + Fluent interface parameter. + Override the default Layout for output + Override the default Encoding for output (Ex. UTF8) + Write to stderr instead of standard output (stdout) + Skip overhead from writing to console, when not available (Ex. running as Windows Service) + Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) + + + + Write to + + + Override the default Layout for output + Force use independent of + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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 + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : AsyncTaskTarget + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private async Task SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + 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 + + + + + + + + Override this to provide async task for writing a single logevent. + + 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 provide async task for writing a 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 + + + + Block for override. Instead override + + + + + Block for override. Instead override + + + + + + + + Write to queue without locking + + + + + + Block for override. Instead override + + + + + LogEvent is written to target, but target failed to successfully initialize + + Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 send the log messages to the standard error instead of the standard output. + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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 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 activate internal buffering to allow batch writing, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + 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. + + + + + + + + + + + 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Sends log messages by email using SMTP protocol. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + 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 + + + + 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 + + + + + + + + + + + + + + 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 in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + Force 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + 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 + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + diff --git a/packages/NLog.5.1.0/lib/net46/NLog.dll b/packages/NLog.5.1.0/lib/net46/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..3b2358c8cbc99b14f3e8e0b56f8fc808770c7369 GIT binary patch literal 850432 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ǩGtS&^%&kY9(s| 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

jc&8{odWdUzMO%iXc35+vQ$hzFi;o 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 + + + NLog + + + +

+ 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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). + + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + The assembly that is trying to load. + + + + + Class for providing Nlog configuration xml code from app.config + to + + + + + Overriding base implementation to just store + of the relevant app.config section. + + The XmlReader that reads from the configuration file. + true to serialize only the collection key properties; otherwise, false. + + + + Override base implementation to return a object + for + instead of the instance. + + + A instance, that has been deserialized from app.config. + + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Pushes new state on the logical context scope stack together with provided properties + + Value to added to the scope stack + Properties being added to the scope dictionary + A disposable object that pops the nested scope state on dispose (including properties). + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Special bookmark that can restore original parent, after scopes has been collapsed + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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). + + + + + Process exit event. + + + + + 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. + + + + 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 the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as IDictionary-interface + + Message-template-parameters + + + + Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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. + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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' + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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 + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state for ScopeContext Mapped Context (MDLC) + + + + + Immutable state for ScopeContext Nested State (NDLC) + + + + + Immutable state for ScopeContext Single Property (MDLC) + + + + + Immutable state for ScopeContext Multiple Properties (MDLC) + + + + + Immutable state for ScopeContext handling legacy MDLC + NDLC operations + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + Thread identity information (username). + + + + + 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. + + + + + + + + + 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. + + + + + 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) + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + The directory where NLog.dll is located. + + + + + 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. + + + + + + + + + + + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + 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. + + + + + + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + 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) + + + + + + + + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message. + List of event-properties + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + Fluent interface parameter. + Override the default Layout for output + Override the default Encoding for output (Ex. UTF8) + Write to stderr instead of standard output (stdout) + Skip overhead from writing to console, when not available (Ex. running as Windows Service) + Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) + + + + Write to + + + Override the default Layout for output + Force use independent of + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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 + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : AsyncTaskTarget + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private async Task SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + 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 + + + + + + + + Override this to provide async task for writing a single logevent. + + 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 provide async task for writing a 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 + + + + Block for override. Instead override + + + + + Block for override. Instead override + + + + + + + + Write to queue without locking + + + + + + Block for override. Instead override + + + + + LogEvent is written to target, but target failed to successfully initialize + + Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 send the log messages to the standard error instead of the standard output. + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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 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 activate internal buffering to allow batch writing, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + 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. + + + + + + + + + + + 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Sends log messages by email using SMTP protocol. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + 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 + + + + 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 + + + + + + + + + + + + + + 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 in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + Force 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + 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 + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + diff --git a/packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll b/packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..2eb2202b5e82383e6cf0f6078ed448868c0a25e9 GIT binary patch literal 763904 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
i1&9uz6n< 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 lCtx(H<_h5 + + + NLog + + + + + 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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. + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Pushes new state on the logical context scope stack together with provided properties + + Value to added to the scope stack + Properties being added to the scope dictionary + A disposable object that pops the nested scope state on dispose (including properties). + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Special bookmark that can restore original parent, after scopes has been collapsed + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + +
+ + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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 + + + + + Process exit event. + + + + + 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. + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as IDictionary-interface + + Message-template-parameters + + + + Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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. + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state for ScopeContext Mapped Context (MDLC) + + + + + Immutable state for ScopeContext Nested State (NDLC) + + + + + Immutable state for ScopeContext Single Property (MDLC) + + + + + Immutable state for ScopeContext Multiple Properties (MDLC) + + + + + Immutable state for ScopeContext handling legacy MDLC + NDLC operations + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + 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. + + + + + 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). + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message. + List of event-properties + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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 + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : AsyncTaskTarget + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private async Task SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + 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 + + + + + + + + Override this to provide async task for writing a single logevent. + + 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 provide async task for writing a 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 + + + + Block for override. Instead override + + + + + Block for override. Instead override + + + + + + + + Write to queue without locking + + + + + + Block for override. Instead override + + + + + LogEvent is written to target, but target failed to successfully initialize + + Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + + + 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. + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Writes log messages to in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + 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 + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + diff --git a/packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll b/packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..efd13afb88da81db7c8d3dfb08640550ede78e85 GIT binary patch literal 809472 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 z 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 z zt$YOPF0zlzk3S@KH^wc53gN~2&TkajkOf_-cBac4euBkPr$IVV;5TR5ufcDj@ZJtP zbVbe-j8Zms+kk%4(HmYNx#a8n{5-o*6I!EGo{%dea4Gn;j_UBs5Ln@Yx5P6Ly$s1X zfAn(I6=NFv`M&pQZ|M)5O}eu(yMN=;>{TwLUG1#B%GiK{9zf;f*ft#VVNvU2s?Ijw zk}9M<=DbtMSGG1k3rg5hUt3;wpx;!$w7s+^$5DH(aJ4f72gLF}@zY!3iIz=uh>b7s zTbAX&&0}}3Ia^HSq9@se9A(*mDZOHIKXGa6L0)CFnUs~?EtwM# zXwBRC8svHbPqEhDg1FNoy5=BR+_{l&e!n?i7@?15us~kvKgKKE1gX~Ap9J5a@jnDq z6V;5)O@lPnZ!Q!X<`tDuzo}@gv-0!NskD$~4d27OC%du^szXyrRn~;mMff+(<;Tp* zOGM};BQ4w27}>0p=u4vCycn=luGqAY84%gF*jw%> zItu&ZITMKHQbC@~V>aVKfSRd=TNX*;E)Gp|*VrAAD|>9_0bn$VFb@&CB@yP)SU1Dl z71`dcJ=SJOs`gVgW1@z`w?J!DMwfPs$Pa2fS6fsY=IpAU)u8}_ky11WjC;nfB^=tj z&EnmC3f{L0@1h;x6@c*W)W$0uY*cL=!%b)j>>QI%JZEQS=c}buN7fW>xc*rot!Gd# z5sQ@~W?*Ny=i7oaG2!JHG)`2EfL$^0vTZp^-d;JP;lD1Yy5n+`?1vHuTju!F+JT?i ze^ZVmD1HRI1Adgey>djuf8@u?Io%K61*uhk0lG5pkS`eSWh3`$Zotu?vG{hCI0+i_ zp{k|Ui+{2F)`D;K!xID+UJX=@6V&$#MFFjWy)61|F33CT1ZCg)%|vu=-4{mv@J=;U z+NkR7IkQ*iU{HpY&%mCIgGRnrti^&M1pB1CAESKQw+r^7w~Tqd*{h|F_p{Vu)&L3E5}ys|BBn*1ieL2%C3xE@5G2S?*a%mO$i z$VFcug!X<=FTR0mp_f7x)$wVS)zFvsGHAP>5c!S=>tGN)3nzRdgK%rP3O~L65M|bf ze!-D0R>%Q0-ExLfqZsY>rr@F%k&Va{+p#PnTPqxfC1l3;s4Zn-i z+Dk$hsvn9FaNZ&3^!l~ai^ODd5;D;r!c<+xEIb<59p|RHUeg**F+g)eA7`g|52#HY%9ini4X5lA~fVu8;Jjj2DHFT*p=Ct zGL4i(@nvohH*SaCHM`#|dgJ2^C?n&V7Bh4)pMM+qdASRTWOsx{G; zhxW4;+PqJhJB~{f5xs%&f+x3|SK#KN2ZgCAw9&Oha9}1>S61gCPWjN^u!!@cpOfrz zF|61Srt0W!et`IJ4Wr29=$v3{`C3YMmQm+$zyvXIDD%1~vWoXL4rnCjMLT(CUz+&4 zz1P0U$x!Vx+53wd1LoKyHz}D_d+M)6xQ##J->_{X85xXTNi~j?qZ_EL)_!n9cbxUh zX-6ovrNBED*~M*1;7MC@?5f z9P{mwFnSey1iAdx(FS>3OLVU+Sw*B{>GIq8O8uBB-MmuVCd&b)#{z%O0RAA_2&#^L;5QE>!EYYK??8A4 zVwyYv(}H^-^!8DoKx_pmB++YVzsahhow?vLvs>oQ7W+JZmXjYOc(s~$fcC}{2DRS# zIPp6fZ3i0(hw#gT^r8@R?F4A&hv9@rsUDqIEjT>e!h(pt#g{hQtsNMaz)8fSyKkpjgYh)#QZYtG9s*U?x^NSv&9VPx z+C@-5>{r>{7NM}(O0j3C*0-r$Y~DDDkD>D|m6u7)WQ&>7^+OCU0~TGx%s2Y7x&m&zHYq#2BE6DTl|=XlTZkSeq`fH>ejLYukf#pjMrhN8C||PGyYgMPe6H z8&mnh@}>22$QVz+zhR2$MS329U%+ls?B zz#2Z9R`92(>e|x!&Ho8~cX9bA;w-KvQsyyPO2L`xNCr6Cu=e;h{tipFRrcCX2Q;I^ z?jnNd68b{NgB=^skeIavg;x5m4lKL`Vf57>gVgR2g*JNWnLu^By{UTbaqgJf74Jm< zsn;tnb>kCjl@|eOYZdbladr}69wN?3BFu9Zw`9s*ejdhu!<;1qiyMW?5r8&bP4kbAAL{^u_rq@|wdxXml zm+1)e#Z{D}EBYUm_800lhNN4SNZov{*h%U_eeQVLSmu!EJksMsqICjwbaZ*E=?hEj zn_Quejv@M$|E_2jjLF(T3o{wC2PG#=SI#em`vknt@sWP|R=%sR516Z}RR5$ov zj?)rz_+KKwWP<-f`BgbKp3WgBtz({AM}x?;br=ovph0swv?^hi9jKgn!uw!3(`?q0 zF>W>&3x}Ew`2+8hw40^IgFw)cRfBmbX)ulQAxq0J3=;T>w$A zO`;4Tj_>WFT~W(-qqR(dZM{Ny2U}vrT8raJ1-VIpd~7~Lt-c9^d)#U5QjBHVr3I}`90sYoq;=}rrE0z1E=>k@1~(YD%U6-! z68*Hlru?GS+TTvD{Vh@ZYY~~Yzthc#6=o5hM$a!}WO}@@i(oIw!m@pSrv^JVuWYk1 zXkDu0m7Hi^hR5wKCT)^4#&|DFX(P4S>}7=^IN8Ngj2rWOPkO8`qwPB*7k*PH^U=>4 zO=8V%qklKizmg*4i8pn|8#R%5IT=!RAn}_TYsVXVD(y8>(v1A^#tNmqt~1T-*^E7& zo-DqBWWQ_u3u)i2E97rr@Fb6cfbhH2WaKN5i~dQaxBf?%KI}II#-^va0nJhI(Vjri z-Gq+mv$l&6SVs_bP|>qRSdx#%l|l4Z_^5yOquSPc8gF(N)_rrv8~ZEYmDzmo|0h+^ zvBCZKpbl($?1T19xT0>G5~cA^>&abdXW0I)^{@t?_h*h_iP9ov}i#R2Y=mcBrV#hMzF8_GrI2HSz&SG679&enewD(Pyc4Ymn^j_o+ zU2Z4!$ofYtrmrW7p%SknFE?BGU8}t@pVg-u$GNycBqxss60EJ@6Iif@RXCS(@aDr8 zu|cC<)|P^tVH>tCKA3{kB_ZKR&(MR`jSlRl&e)q>><2qzKjdORtl06!sbcga@+ZxU z6@FLr=Uxaf-(OSTQ>pJSsqcx@_jKxeQoeD!RuTO@jeREd{VnzVQ@*5JTE$19BW)Gu zi?WYpDI2dp6QMHvDqY(c3NKfa8VX;j(0KjJRDnxj_tv)0bFEv+%-yKZ2?q-77HldM zguQz3Z@lqxmGSv(8FZ32(}z>4Y_5C;bvL5%cH zS0)yT_|27Rx!$CS8RglwFFyA z;Akma4+~p1vB0I`O}n8vnmgCN%LK?)yz222KB`o6;`1&8ujB-N9#Ba5UQm)$hM%>*@R(BKYRJ8U)>6$?E z31sDOwD_}GLqu0ln$FZNWemf)45#rr@rvd&@YQAh#%~D8>xt7q^9I~0QCASv6jd%` z<9`Tm(7gRp=m@9Kv1kW$BxN3(DL}NT%=9oPd^?+yX=n;$O3FaF@j6%;bHtcja^B(@ zc=(I?m+IPn*SEuxhxRB^IYrDzN_!l^Ax~RigKNT9Q{62|FoVaQoQ|{p84*XLRM+6z z##_PQU=3|}8F{OFx{O=rp?J2C*_0J%xwgP*OY&wiCGq>=b`f)pKRhbk(7TTGM0N zt|7e<7HdB&yS5s57m{~(>no`gSl1Q;liXO)Q`v{fQd%PgYp>E?w)W~ryFo~GRt#7IlbFFXTfT^iq^neCFc41=8u1-hmg;SA<{J;>cd0X)Ljl*=Z75;flK4Ig8) zA@>e8LoE^$2}8l2oaHUWsG8alQQCmOn|?Irdu}a*e~x-|df&$J>a_ zHTO}k8FFqAts*q)yHM-x%GOm4nGL_3m;V;>Zp=G~x>SB-{!aWIpwq#z;4m~7`c1i# zyIjAi(xXFE+}MGEU2@FXFO$dRE*u`nAe{0s-gp-|Hou#nOe?rr!DM}soVWN*McZd~ zaC}eOiBW{V@kojb_ZP!EGmb0N+?Su$dz3oZ5|Axf<*_B75|X}2msQZ+$E0z*S7~}? zb8lgNUq|Q~g)XGC3kVUsUrx}t7N_+ArCB|54&YTa-oofP4XN zCa~pi;-n)0AL56jjA{9K=~RA}{0Dxh&d#ra!+%~U{+Y47a#3Sy0sH@l0;&s{w4|J> z-X*b1RY!wkd>-YQo`!lS4QZWyP{N9FTBBr^znwZ`7elSg)!azPYvXj!ZHNI%G)1%c zK_2C?pTw2dX8S@VWy_qya=wk}26d!FkkY~VkZ42&Om29VG9Q@!YAT zL?08z)BUDg_ZoOpDdEQzKi>F1;rhQRxR!{TBZKm~=n=5WK^blTtbAGt$pbn;fbK~}uS=o_T=b?t5$lrZ zlR3MyQnPuba#e@?rm|H{Bl$_V8S~lq|BHF7ob@kZPQ>S9S1zN^h)};SRcGe{?3>q^ zid_07CJ@#^z`-QH^wPz(;q1!ut@_SJC!Fx)cY5T*PlnWzV0TQc)9$F z-3+d~`4@x!q>36~qe4t}H}+^3X9`ON^q6m_XS#x2dB;%R9w~3qeBOg+$9fHI(Jli8 zQ3u*$W4w(veTnSe3|iBdcs6($&d}+48s>Nyh4EoI8G8(Kq4|AG%f^^{as?-p-pQpv z?F|$YJbTFWHh6U^BPsr3a_&^{R;+Y-A$7-acH2ygI`_mLbZA`F_eX!OZB#kOwT56V z#mTp^Cj~PlmaNNfl9Zc&#p?hE>}|7)_M~DP%LK>REylKp!p^{>_T<%O)!*P7g=VB| z`^|%!9yW8j`;pzQT{WHo!3~1gtOhrB4b4#XNVBwpbFHTo%Cv-*D%}?De^W}X^>>A# zS*{G)I9_Rf-ZHCGfdx(du6Tii8maY;YU@vnmtut$VauFSU?`?f?4eTL#21n|xExe{ zJ=+H$tYz=k8D}uEo)SLHL^eE$Z*$|H@U{6LB2D!8-u}?D9D0KF>`8mK&eN#oYC+aS-(c1wXG~GWv}- z^4w?J{EW&@;@C3$vWA7_ZokxR2_}gw0Jcg-5hlAd(Df=i=DFM1OTpL)?pWOcVvZPX+Dck_N+z*=JX=-&8KUjt~bLS4-n&ys?u?E6^%ZV#|T5F`@22 z?xv`ppY1qDWbS<_OJ0=eh{5pT{*gqsE3pO($AGCcg;xp zOz3fVE3AzuABT%aK~is_+EW-DKb^Z^uO^+NIwhhJb|8t;S74t?5nSt1LWNg%6prrT zr%#VGegzNCoj5knZR|%z87SBESXnTCTuZXYnYC+GyVViPR96Vyg{iOMvkOzw`$x~s zd-uB?{kjKbgjwmj>SR>dju=C|ic3D(Ou7}^!Z5cmBfh%?VtavY`6+IS{O%@dJMz0Z zm7nrK!ZB_6y$JcS*CF{Su|s}eR|N7?Lgi4lVsQV1{EYb4H% ziV>o)Iw5`&pM;pm@S1DdGHmCU42_aRhAJ(QAtJTlxydsugxKrP@m(WCbDhXcBm9o? z3|f{%eumd&P8y-8M1Df(-NdmT)alg=Wn56Mzes=sA3(S1DO?uqGlQ~pg2xMGs zJ1J8#=iqH7Zy%#a5WM52&PJT~TmC=BM(4K(*fQ8Klv|^Km6?yQPqSD!n@jlJI-|9l z0(QFB3gzX74UX&!$(q?1&cv@lX9kPNr3f>8gndOraqu5ha8u}QGqq5q?FnhE%ncOW zZl_+YvM1gICN8Hb`HbpL9qAO7kT`Lk6{yS+C)j*g4v15s&SLK*wzY_KT8H?v6}&NO z>E-DC%Eq0IiJgQhgSu}D>a9WH%<43hJ_c8CC{b;l0U`<#c@y`w<5w)UEhUqh0Xjwp z#pq3`P^LrvdWU3J5UyA|Es~f|<9^SeSgUQz`TQMm&b)JU2Z%Fu0%FxEDjITJz*V-{ zvN|Z($|3!LwTFVH(N?u{9DPncj&0Wjs$)eRu{xQkg}KBE53eZ>L0jY2RB~)3N-54t6t|b~ztHwC zb;i!!3Fcbdt}$Cta%C&(D3w*_`6`1B>{pKx3Qu6a&Q??v`Kp+}epCBV$(#iInm;1;K+bRYVJU%+H=YFvST}ARKwNL3*xKJ91XtLaKaNDZ1L&Z)qu*Pt zdgIc6)t)o=621L0G&C6%RSy$}c0c=F$*(D>XLpRb4`7L__#KE|$J%og>W+`8JBV0O zcc8(<)Sa*mbr7*g!(^W~w42*^h8*w6BOQH-xK8(*;?~6AH^p%0B~Q{-UYxEXUAn## zZC#<8^%an=kUUOTC@EmPu^Q4gA52cZ2+x-P5c!kz{MZJaFds%7>x;wX1rLB z1w7Yp9!=OCUNRp{{hUSk(F6M8fb;7Rkm6>4<``jW9xLGR_tbJW?OB#~oTdFsY3Ro_ zcE#{#3Z#g$r$$^bHKIN>;#Jv*_Llzfl%%txcY`)A|K3fxKVOdp@lDqGJ{=Ae3bU|&h;cs!`y1t=$n24PQcK9+dD|iyIT^QR# z+4@<9tb+Ad#AByijhz>(rvD#h-vM4l)x1A@%ie@QXeo5Kln|CU`ieN)&77!Fc0Ra&eQBW)(N)r%K+W(z7XZPNX-}n8W-{m2*^PV|# z+MGFM&+aCme~rUMPB$dym@rm-cqc#=UJw>SwPc*bPI2+{8?XW#Qpt!pXLCFy15nZh z*qs#1&|X}I6`pAK2B>FjeK=9|oMbJ`I~t4M!*d z3*c;2P5s9U8B`J8=w$j8i_*;%uAlUMc8DyY6D zPTi_;pQ}DR?sIuPGVV`=F{t_YRJIR3Q1Lhi`m+0hU_Xc7Ed|5mzsWzMW%=$E2YKbM zK(H#?2+%)@@s5Gb!zc=aPf+^^#WH@6#dCT|p18Q=z5F7YJZz5(*d7OPYQ-{Yqwu() zlyRp!g>0Eb$h^QZ1C>l8mcdO(SQ_gX<>ix0ad?$S9Ly6BcJXB~Wxd5R+OTk62;*5o ztkG}=K@LX$lo4Z)X;~W(g;!RX1r~g-K^3thd8J3+I9%$s$^yfEKYR~@XjCO?6 zO}HzcfiIRZnH3z%SOelou7+_cV?8c2Uc(=G33kTY%#KAZD)t?)>UiBeu8<9=CP@q? z&(%yy;)ESE-))D%b5`4z^njTk8GrRc78=e}y0L0Oh0n zm9dY+{+P!n+?Onv`5t2OH`m4>vYEwyS$b?#D#p6E>D$CW_nw+ z9+t8hP!W(XC`lR8+hK&L>PyIbx}_&8GaU9UD`B{rCu?*V{?3LI^xgXPk#n!a%Gklh z+zER+9-MCKqo0Z7y5YTO{;3S8`crAkKDkOexhpC~S_0czp|vS zHU@UdTt?_O*sTf6&mPAjiP;=gT(Rg-LQg{|{Ul1%0QZ{kg6uFF(F1a6D&p33KMy0G ztZdE!+Zk>id$J~g%VtOg=nV6F;FFtUK&e_+Bm91M`;GtX>?J9FfK_F>s5_~MR2nWq z&3Lqyg05 zu3%h`=WDKKnJj+->4<5;WZ>HRp1~#C9`|oPyQ21jS%CN7YQ&hOZ&xqMyTUl;kXYSs zmZ~0u*NkBr`x#VzC%eRl`AYhvtY?DcDMtaQLjSBno@(m4cnv>2;w5S!ncT!Mrspg@{rH?+o+V)1eX@ zrqT_Z`9$^%Mzf~kZ?zE~%p^oAi_zpbINNm8e4gytEQDP_R$K+M80OPEAf&JluL#SY z!oi6WidUIULSAfPEt&+;YM-c@!7hcUQ;Evmq=nHG%AUzeBza|vY4gPbI5{qYys%%B= zB-e4j)k&&KlDXVy99I{eoMAl=>xV2TFjxMI*~)rGDwEuBnN^%z87OYYsSp{5Q&aw< ztuC+1ZV6i&oi&_YNr887Sho@^X$u~X5Oj<{wTML1Zy`YMk&MOXvW(lJr%H09W$-)U zR4S!(DyN6@o7BWOl?91e;8kzjO>DCeQ>=>5N|;f}g^`TyhRS=Q!~R6+EgfwuE~MK; zZ7d(;UT0Qrjy}iRt^9is9fSW%=L668Il>v?J!Ua!*<=1+VQ@=qgArazSn*L0s&sI_ zh&3x8#XcnLqa;P~Q3sGk-cR9fp3Q%7J&muqBZ^--28js2GzYl$OLK8)`=yddQ~4zp zkoy9rnbx!*0w`_=qE(w?~7N*~*k=(X=zaNZ+qMp&^K-s?k!!)7?PvKemQ zu+4~8v63 zVVfoW1uQXnU*Z*Z)A%aEBJemE>X8>QRV$tR5jJz2@Idk&uvPNtVE9w4doxdS5{I1! z3SL6ecvr?etc2tqEgzo);7dLSx$Kp~@CiJgCi1Z|p$y|7N!D`EYOvlPS*KzvH!XcP z^HJR1#}{(XEAiwXIJlN4`3z`sC7#c#dEyL|G06K#_}bc8gyEoaL+5=cv$o3nP`r3n zIb)?<7xg5652@7^ie+pRpg7*A#;-!jyo_>=Gu209!y2~ypEXFnyz;z(U;VWTtvyS_<7543P#pNy zsCz!-8HL;b<}Ci3BRcRR2Z-gY(xx{A8n9MOUd7ANw%+s=px*SC@K-i+Dr5P`LA-pd zo_U31uFVy5GsnbPv0J>TFYDDO8lW;tt!$I!%P$a+^9)Hozc+acN0F1!kYctb%_HAW8eUh;ORh{`Pay~AbrLdPGLeA>ill2xys-9_}pXI!*6eUYh zvBKtM+)rp%xwyf{e|b}8yHd0xQkd^yR6t$g=qLQzI|%a1_r6aj>eM{}yfGV$IsuOZOv149RzlAEGJb`S4sFPxcTG4W_0e_pU31Qwv+_k+y!OUC zS;lBdbC*$CLLRsQOiV5{Z;hO?AD<_HBl|wB<1=>mnj$UE-MIQCMgZ;Ib&Z zg1@F}`gpturr8CoMGrsU;AopeTulozGA~avwl0 z!jIz~Vw_Kp7e}>^ABJj>M@E>FeWudLFSc#4(BoH5@{MDT;f+gA#5+Oo`Zx9VJx<|> zoq}A1Q#fp=5Ok%$oE|GMr{gst(%{!mR*jc)4rt+$t|ZU{lleIpbmgP0lI_iq{?cCR zlfi2F)iW@Biugq?OPJ-yJ}NK5ZTCO8hM&HQzv_59M($MjB{@r*eGM>1Wi92+W-&~V z1eQ5PN90wVX=kizRh;t!O%FkXePlfs#3zR{ud`m2svJ1hm*FrB?SDc>9sKRARPfA7 zw9Cv&^{+}uU*7X6A$$&BBzR6&8Al8`PrS*Mh)1TG;TIpfC6h%`6_Ag(eu-+s>m0MN zQRu@aGLk;d2<(wV_!L=!oOfjuRnH*q_=)rkk55i^W~(q5#YvP^i6knKxA0&FpGDLn zauO19@fanPoG*(HCn{lVpJsoplEMBYC-V)H`0Q_)#ATlZft%MtaoHjir-TxekXH$D zzc*Z*g-2J5Mcw{wd2EYX_9O63r&oNvu@daNgl6;>^7i-~#>dr{7+<~fZI)o~u= zGfy!%wm1-VnF|^ONFC74bGkyt3+TAv7wvNDtCKgOAM?pcK0OlE$?VPlq}!8l6eHrEgnT3^E?9kuEkZK zHYk5?Tpe4&&4$Rg7gx``0VB=Xfi%LD@!e;^7|nGS>?WZ9auy7;d+I1{&++tG zun}0@%|if6%P8t>8%TO1v|0Aw3}8XW0ae=JkSm99x0bVD{Ez@1@w=PAkE6)ZPYfE| zduQ?E3F>&_Kdd296xb)jBo(EK>$}X8Gu9-05Y)#E+ZkSGf5dX!X@D!U#z&!|UMuj-Ma{#QMQHE=yjrtEs;^djn!SyhkW zZF)?e>@EXZLL9;O>k^Ki2ssg9Ye7XlAXbg@aYl{(B^+^1vEMB9^x)rl74v$Xv zvT$@ZW`DfXz^N?Y5U$L!9G*6!X zF>3Q-m{Z5ZllEY7hSF1a4B|0x;0=JGB?xZ_p=ppaA%`;KYt4i&7ppjUW{WV9BR(fs z0P!I%`q)PTqT~3FcVrS;L(Yak(^o2l^<7>IPl!h)O$wkhtEbEtFF5zJkcPVI=T-Xh&{_w(b;ORF@49`}7A05up29IJb@fFX zJ1=ceCki`USY5@^m(cP!URxMT_|&*u6{4o-3!#dfgZrR`uil{NF}vlTN$(Z4L%(>+ z)>j|4qGJ3p)5h>BZov}h7ij)+C&z7~F_RL2sTg;3UQC*y>!lDibM)b*omws*EQf8w zq?2>)G;X6dlnw1dO{%L-j%{3aa#~jFD@NmyKh{!=3Jz0OrKsKCL_N-P{`{y(Wlc#) zm+R^$r{skwT5Bn7glnS#%AxAC6gntsK=n6zTz61UDS@zsHD28Oi$mm`^O%w zuO9A-DSg$cH#Tcoi%E~_IxuO2*3yt>e1KELV)yt=Bvlc+pI6zS);NBI9)LXaRZ~iX zyI~uOrTn98Yg(zb#L{Zq)Kyme9c)O+^?)Dba=^x6VI10mZe!zJmF*sCoO9KRg7Bs7 z@Ptn*`gxzaDnwtQ*4R2*(RYgs2{oybQ>V?+?K*gOrJd6qqwM;-vsPi%Y5F&+{!D6n z&5ltRHpDr=_bM*gq2n&wSC8tewp4nN!a7ht4A7j@4)hu7S=Hp-!%9m6y$#J=-Xz)> zG^F*DsP=qyRfsO2;uI=@oK`r)xw`E1w->Y>bf$_J zfgT%f;H?Xtr>d*I6zx~#t%Yx3D%+?8e%x(r(lV*GmUF@sC}~F1inzl+UTZhUneOD}Rl;;uw|b0%9;$nST94T@9x3 zeGTd7l__(v9b+nna8>t1F&6SwE2>aawQnmL4mq}i%5-_U9V4jIFzNJF6{9TGgpXBz zs0w_dveWO&*{#1&#~4OqV3XWh!>EFDb@DMAn+C6}LPzVX1Udu@3!AL5ByRicxB z+j$90vr~H=W#x4HQs=^Ux^;`Gmaa^Vb#JUp<(+yt0b65zqp0RjctQ%L97R#E0d=+P zNBin3T1H_WC-kb0(TWy#vHQZ+>#8<-QHr*R49b8V{EhLkGtEKWv%PetOYk&|nY8_R z72^r|1O0v_;uG)Ml=1a<&=IN^hdL4%txdq>#sqiXly!?8vlAA<3pHiCp()9hxhWb+P zC+!w|5w^?v5~x89We0uf;Inq<2H1v5?P_`Z>T_)`CWV~P=bfI?I?c0y1$jB8SviRFZo)`2EuE37U3nQmWQ>0^gZMLAUaMh#MVNufE%mFJp4ef3OXHhsLy9<8Ev zy7TA}v^3ju3RMZI7%6lH=_-F(Nz0jZteK%_8E2fU&%3M9-lX@J*ex?&w?`>D@{c_) zdF=SY?*h_9ZYA2AMcyJgTyw6yXn-(u#**gEQgG}&(qqsLk(E7?fi z`Ks;*(|yPv+gdHUZ@FFL6X4-kb9EY^y#>DCx<=WvNk5gbTkxd5BK!`ZFRP!d2(k6n za4peS@XtNbQ!yt5(kTM*2+}?R@d{Ee0`UoQa#dK5Uy#4o*ocQ0!q7Y%W2s8Z!>c$T z12Lag2<|coQvGEc@$*U(G6{|zKfbig$VALLRV+WR6oF)6J*5znpZ5UL*2zy4uL^;@ z;>3#PwIz@mj!ZPa?FYy%jI~Nn9x5%!A}95{e5VUlv=U<_%Z$WK52g;}ZwHAJqyT-h z($-Tfhh?B!oe5VY^4W|^PsDU77 zoLHr)u^?5PnlDXF1Zj_Trz&Y#e#!%-n6p43BdHwbDXe*!qd8e4Z#ngxOb<(}uJi3! zmH6Z-Vm;&7MsIp%tMZz>eNnQ*+)P;~; z+JRYV)qQN^_3@=8MvOdRq?;f=W9DVcj4@cIDL&e1BO3)t!wkzt-ZBi7Ybyj9=?Tqm z8xw&{ME_(Y6)mwsdCGtEPD-=d>(w=I0I6nj6iENqLo@gL-Ood#849_VF&{TMFCG!Ba5~N>(Lat!c zngRsnffrFS9cZe^{Hg0Ol?KyEPYyKy@wKfdlUDh-e#*nEsaT_Ft&j6_EZWvHf!>D< z(eAPev5ZM{R*?0W({e0Ee#5%60F}TDfRX1gH@YOq6^sBja!t~DLg(i?Wd4%0Ql0vl zL^lO_DFX5PIX_QEAjJgv$f>bOR928(5i$=6(j)@u;O87R8;O&cGjXB{dG0L8^$}sD zn|~sgB0{Ez$n?<2{l*mPEl8dSq_4#KRwJo2g;M=otNGwJIIZjEGn57d_i{0!oPoWL zq-SWT#QJT7A;=YD1`y8SnUM^d&U&I!dLUO7Ag(98Py)eL!dYY#SqE?X>pMZOP9XC)R%Qn4BNac3aOu zN-$YZIi2U5#t|wd$R4fvI*{_PV|EF;MCSSN?S z0a*#8L9)_=T}IFa7&VNF0k)qdFR0XiHfkHSCDt*lcepK&IsojGgj7< zN&_^qNtbJ{G1$nGQp9NFx-rC9C8fBbkyM;!UMDg+7J%`oXv;dOmTGGsaDk zdB#D0G7R{0%xzjL%}eN<5i7`gtYumA68hCBAV?P{)^A2(K^}4PbHOMj$S6nVqES|m zr4Dk*NET#_6YHu`SCE+wa?NNM&6e=GQybTeX3^XhGtm~OFvCx!>&C;;JSPb*RY=Hl z)95D1Ab4z+33>iDdJ59YLH;rN3UX=z0IGR1%$<>C|eAgHyGQ)SWArvB`M-0t^`?C2=yc?YXQMlRy+lR_RjW+Ty_@glR{k%{q4i009JJN$-< zmCrK~nhVf_gW~*2~d+IQPlJ<3Ens|N^nf_Yl zxTm>BeqU#6e#moGWDd`=Q*Vbe0oO-3M- zyg?x&X|rdf$n=l5Wp-$!y%Xylk0r4@POM#?rzKX;1UuGQMo{x_n zob$uTB#9MpVx9L)7Nnq4iVL3Ef(&s||I_obq+VvQo#($iuZheCC(pMu(z~dgAH(~B z$n>ZgXcjUWr1 z)a!V=3DU+v>Ukd*^8?DFFD8rZv)YstdSqQIo_r!b*J4Yd7BB+%&FBS zUP}MUkg&((X+#QR*xj3gApba;k9dQEY;$Bj_f{4p#gRGYts%(Yj?8gy zLqWc9()!x_pddvZ4)TN`IoSEMWyT6p1^vQCo)o0<`(c@z0ZoCS7U9N^WIg0@W;JWtn=R0 z66@HiFtSF{dR^!FB3<;pD>4g<+L|wUcg6DDZ-W!-5ATN(>jt(6S@T8u%losW)z~S; zKi(^%=Z>T2AMbUM`Jua=`WS)j zX_<{c@O533Vw*-@2ZHbK0@V z4!%p(M$q@9yOo2!@uDYntgWZ4Z<55?=hRPV14o1j*ynd_P|+iB;WW%k=ZL5t(&Pzv%DlB*+!VG6(q51ZjpnB2}&dz7e7) z5o;M68C8J$PJJgo!+et@R(+?HNBE`+Qq4g!d~*u$=~$^9@m;vDa*H2WWLjy zQ)#?!pU9j<&2#EI{1beiO1b*IqL5UY=KDrsm2h%6-S>ka)g0t`-=CsqJdhCdq|zdv zzaXbxC`utm{mXnMaMJ}|UCSKxzvRQqr%)Tm(VJAP)xIhPx$IUi6^rOqUmHQb&@zm4 z5#$e)f@3iaN~WrL)Q5Lt1G%ncs+z}q z_}mAOoldOdzWjo0a$3tPDaJps z&`Q|IChX)ef?WguGlG0MH;haZc% z<`c7wzX*CL?qoT7g8udrYo?BM+$`tsBr;E9&r@lxVHLI?R0uUGyir;J$nPGRKz!ffH@F_l(J{q5=a!*8W@+a zs#woaPmMH09kL!qVh{_S|BOPq273Bq1^Mnr8|m#Y9LLu3iAGX!rwu265$nKDwoD&? z2|*@1u^#uA5hN`FDJO{ELHhYC3i6widOv?& zNApmBQz?5<>}PUGQ)#6C5s`VPyp5#$djWyhnx{%Jk}~~P9Jk;^w8h5j>{p)$!mYfy zyCFy_J?|eQGB+^Wv1KL;QY=1|=J#VKp#Y7Gwq;iNV+3gcn=k$lW-6Wy{sQq_t}n_% zJ$|XQ!JiQCg`QVEHu9!FF&^EIhQmLr-)4VNk?DwiTK=WdW`9XRT1DH)Hh%>{4%D`h z?f#1KG0;3{snT^oB7N>}CCG#D z75uwMU-?@LveH4m^|uvdyi;Rm{ErB-TUQuX+5QfK>`-b@uAlrJ1qs*l&;HJWtne$L zRQko=RglG|jhywT=9BcW2<@9`mVq4>TVuqcT*fR(^AQF54(*=7>yjr|j|OGlCRy zEFsaHDo8`8q{YnXx%8AWXNpYC*-GfRr>yyWE}81)8}XBo!zQ?=ph{80d`n`bmQ}H) zMAb6i734}e8>wyXRGPI+PE;Lpw;*jCq^|j~XfCHU&x)#R9u%aDMn*){GmlCv6F!Q6 zv!WW9Ux-W|N2a0qRjxcYG*3t@JhLpnRBB?L5v07&Mw*#F<%;!?`HRSW=-AK0=C8SA z+L*tIOxSwcnHO`(bTlvLLOPpQCDsB*b64}vTrw%IsbOQUjon>s9G&655nM^ZIWSVI&kxFCC#9T7jX6anW z1hZ@c_ls|^YsA0fo{1*D#O(58lkq&e8+pdOFBdY^tR;Hhc~v;!Z2iH=E~@Sztbx3t4Km%Z0pTc1U24oiI(Mevww0T|{%&J9dq&HB$r`TF*w- zo85CEub4e@Y2IY^6q&7#uY1)ToJ;04GcCb`gwro6%_He8b5sKRgfDpD#V?h%0dd#i z4l^X0!(&^oM&1`84 zyw*&FT1S6kP8Fn;*38HZL0-O~^kAiFK9|5JDT6p$%D+@PU@jJ!k1&^0$U$>?u2LK_ zS105_o)_zOzetD8wWy5(^pg|osJUKBnxaRvRQlZ9lz>G7ox$EI|19IUxmonYVZFn@ zi*(%FDv13o$VK|vJd`W-6Xr3|JkIe6r_2+%WKNqWb0KHU)47nJ%^xML%i*(LB zn@i@r`K!px#d=5O@Pc_k+AC_hja)V_2@-u*L{N(B<}GQjce>g#H_h98P?h)@4fVt4 za}wDD9MH9qO1DfS(QPfaOn;(#wsY5v&Lwltj7elWyg5kewTwU@PLPi8DR?r?#rdQNZ@{v!5iD;mrBJ0jT5<_ zE^ua6RRS#~hwoxO%fFFSJ0G-3klYbZK!9X{Og~f#YQt9D9N+S1y5Y~+RtK@AH=piy;AJrz%OOS{W zB=DFZd$D`Kzf@`;==(3E-@lOl|3U`-3mKfq{y7%2Zd-Gj)Zsd(4m$_Nmz*C~9 zmeZ!a0uuxoTHMytJ1|l7e2V>5{$0dQ;&jO1yeLky@Xs<*12ZL7c+Qp@m?KDd{@gz> zS90jXik^Ra%>jY=g7kHefq}(>EO3xPfu(}9h(MMLk{p4o66Dngl+XV4D7L^g$p-SOc)R@3~x%4~{*eNn$-|}Q&w;+FOAC*c^1wIty8tw$~ zFO?<-4hZsINgJ6HI4*g95&J(%W@+G5uC!JKe#?cd4O|vI&*`3gRNzxgbwEp8v-{YeAMc_H#DyXpta& z-jpcL7o;{#6g|-fE9c}Ob!e~XTRQxw-YR@w3eH9QgVeHtqJic(1^RH1wst2v*FQ*K zfc_5Z=1udL3fOJQlajN{G9Z_dbG?tE2TpUml$bn+%sK_ z_)KqfV;ZE4KAb;;20fk0T$JN-|8TlAhxwG8 z64na5gMdM$luNW z2ECE0^1WYZkW_orq`X6M+A+Bxl^br*o&E*sgB46`)7$6-=75?sU_PF39}uM5C}R=O z3KI<~IiMb8FU5U|Shy#Yi_1TFjM6{$2}L{LUO?Fa2JQFa`D)OHblMIZfB(K{7UN5HLPijPG- zHAA~k#;E%)XuQxM4Li#19Hd`oaQoJ#&t5i=PC?pG-=Mva%O`eZ&~4Nk*I(3ZWglzM zpAHWQ+wCTtDg9zVO3t|5icW+bF+WRi_zT?qK7sPz9*NVapdDW&`VsArkNZ1l_ltOV z4)}*hi2efKMC60?Ggel&ffwnIr@saoG-VmyuLb&W3+%X}T}O6NcG^bM7yBxHf#y$a zQtkKoL#mt;y5XeMz#u7#_cS8Etfv|L1=B&Wld91FyZ8lz-iAEm^FP3oc);hQ-!b1; z{F_04wNiY8ev0-K{df)zwBEpQ{bU_R{SQpZu~2TNYra!-zNV94e~jlODH^j7c>v)SbeOAYxqT}b+@ei+1`hGzFZHAkdF=)4kP>zw0p#Onx>cqG~hcs37 z5u`%V20aSgu7}*^x67UVD3{yzH$hr~zTWk}>JQ>+2)x_UXV6Pclt1azLivX?4OP2c z>8NO_#vC4`vDo?SIWS0_LHiEulvDT+hu5T3_^~vU=fN(xTMHT#T9ej8&zOjMXFoj- z^;qMcq7^?=w80C8;P+}Nx(If{a{V;kQ`2#phBTd|X%kI{2vzMo0r9_uf0zV%X}hA+ zp?4DUeQhx3yHidJ^z#?|L0aF`psA>*vnba*&=}O)V$kDxRX=HrT|Mq^T^>;M5ri?n zZX(`=gX?=aiq2lm`NuP<@3LNlvd<_x{PH&5IRiW$@?76Pw^a6BagqxE2mWyq!uMe-qTUgCi|A9Y4|3SKf{2oI-nu)&((g*(# zodj?D`x`PY;#pbUPf~xw$vA|kqMd#pSeu?%V9=kS7c?C$G)N`e8ev$3pODB=;3j>0*4R*2w>Ai~iQyS!3)aUs^IcjO* z32ek$_%+@y1$s%_>$5UG{oAe{+p5xUgMItnkS}<@%KxISME$^*106P~Q%=db%1_(n z9Had~H|f9OdM}wDPcfl>@+B(TYdYq1;G1IJ$+VN^+XxNEtNDsSV-cRBX$MWu^kuwL zP8$4loUc<(d!aR{&iw{Gjr_fa^yh*$#yH0HZ}*Q6QC{x9&!8TbBD^{DZ2-Mr+w&W! zFP_KQ_BRVW*MDB|7X}?g{c`+!T2E`~X9f)szZawjrolf&*vDSXr#GQLE&C4lJVE)1 ze5S*`tPqF&6e81Dc-&9rcq;`2^Y{GYWIf1{qFo9Ze$f4`#j;qN$J6W9aOhiY@Y zAjQ2(^e)PGQT!455&G9&@Z9e{1$_+m`^BIj{g$TY&$omc|C(2QGQkk}eVG4$fq3@3 zO3jzxhjss4rPHzJQ)>QZ&&R^;%Kc_9+LikgQ|>pMFMGc6;3ujbu4+H6>eZkF(U>zs z?yQV|LA`!4h{ul~fe%D~W7-mw+pQY>({B;&u@-uN)9L;Ox%FuG%P2qB)8F71JY&c> zvTvlKf1!O@PZw?1Cn3-Cp?5I}BW!~d2^shpLgR~#^QUdX^5zhXO=dG-d=dDatzJgRs zw;Si11PmnR5xd`ho&>dL6F)b(gOQIgPxSS^O zQ)JZ#oAP{FZPbJEr$M@mcHniM8i!%G7&_;ieNf+AzSYt%Yf>-Z z52HSY3N>ikOR67#c1YFhpi7GWbx_f5<55?GJLSY6KUJXbA@mz=w`tH9=d8q^K(s=*)eJnppU>y*W)3R2)!qVp?^Yt6#5CLqsAx9 zSsEz(0_ugsZ(%%T`i_=U;}-mg_ER~ZbGVo4Xg~kq<7&LECgUCE(K?^@xU0t1nsl~3 z*JHR|c;2xH_2SD^^bpcrg#6m$VkOiw`-Nz%pBBJ=qfxI*5#H%})js#>adcE1dWzv&GDYRL8rmbySB`kgbw6~^)9ZlU z=qHE3vmJZ|s^(MS_Wy6~ZnyUjlCD7`hN$-44L`#5G)Ggjsp4(BQ0qy%pLfbJ#ZPp~ z$uphhI^}!{Jxmid{VZMK-w6%seW&nx;kLvJ_w()WTR)&2FI%d;e%5+k6AJtX))%%f ze)HfDurGca6Vu5@Rr~`3@JaRvJ6y3EYaN8Y`#a;1i&gZ81Vz6prs$}%OoKG0it=~Q zVm|d7^3w|A#$`~}dmYqX?`&_*?HkU|?seD`gZ>LBFVh{*Df-7aMc;=%XM7yyDNM7G z4%4!e6+NfrDvVeB6r{`HPiT7NJ%tY}rRZYKCu#ne=7(s0zUIqn{vFLfqWK|O?*z?P zsHOCt!hQ~?yI#xRufwx+c`i*=a%*=fT1}VZt`48C={ik!YCRpbo~b(B$--lQ@&LCh z#wFAP+uwyIsvi}4SkV$Gsy&)CR6MWmxSySp@mkGenO_7srVHS2ncDGqzl3>PpRLCZ zSA4h~Z_UTs;86bAgA~mYs@nZ;wEz7&KX&}7l`*#fZtJ~Y##i_YZMV~L*N@Bfv8L7F zf0%!~v!Zj+e>s1xv_F2X5w9a^(%l(K`VjaFj z=}WzX6UdPJ5dMPG%PrSj#<72g=a#q2d$*fv2Rq;Y4PSzO%;kyE)K0g2ALTc5$Fu9t zmb1&7J0CV~>u;A!zX~r%YwMw{QEr|W@%*tn(&c#`?~}1#x6}CwIOo&WYx|qI-Bf#J z*TZ|-p=a+bHD21(mbZD9D-$87!h>|LywWqR0#oeMKFRy;293se$LaRa^vlMoeI5kQ z?exES+?No227U4g%VYkfd3U^m)b&5&LA+7ZAb+)RyYGBN<;SiUyL`6&K8~{S{O;6l zype85O`3@N{xv|yHNrd85N6w@QB#$-ZY4#l!S1-;muow>)48S73-!YLpb>w%(D1sY z>m*eV+ftPt?!Vk_YW<1w4#qq35N|g8z`yOfQ%+FEC4*+5pK$uT-sk$Z=S^z967KIj zA0IX(B_~uIZ)gK8hjwGyAL9wrt{8`zRujA?UBtXU9qDs@4FkP^ae(#r?x))0mh6WI zDQ+wG&ziJiF|Rjj(wH<3$9!Atq9&Es{G-ALXZzAV~eBX%c^Pr>?r0Ux5HffC~Pmn(ElVyWG`hZI3DQ%y; z|IPK?`!%Ae2p>0H@pk<0bi0nz?fn_*gY#+6<5m1{JF_0v*G2oq%`FVM-xZjFIS%xD zwSVt}^p}Cp?62}2h50z^wHhgE&zJ3e$2k}`xZMNV58L+Ktfi8-?bY_9x$V9z;&J^b z8n%-J?02n#9aI;Jc_Z?{>6C*X<^Hr@k5`x5V*eQVwfFN&qhG88|Ge(sk73=!`On*0 zmA{U*y)!YDApsHs$U##uI6oadC&J%`C*>-gIDYNv+dKa zhZxu`r=NQtry1tgjK48JmH!g@FR$nA`WOs<%jNz0Q5Bw|>%WVPyGiuGGVHUUoKaJAoI3eR2C|p?@>2i+nQ;K>yZ(LF$2h{tt%)DfL&i zZ@0Gz^N0uhGvF;Sulq{V+cmLYy-uy?C;p)P{$q^|`WEsTSpPH`jD5ZfL}$Sl5L%Na zX?p8-#)I_XNwpp@(7rcn2k8#x+rNOS`@v{u%v-9~#l1=FUsbJJn>u6N`TLMgIpxHD zYg674*f)V+{J5K1SJwc&4!vqU5yYM>-#4(wg&_SY^IWWZAjkFIf08Qy*@;YpRPGkO z2aEi^kNy})GidXDc*lR5tzYe<7fcIM5O!4s_Zzo-&HI?)b+__&@I%tBSeLKlbZq&8 z^uS_X7e>SzfqTqIXPSvOny2}wBd%|u9g7ab9@71|j}Lw%XybLNo=+jY1f+isv^1zC zctLs#^->{}q*-VZ2n7Wa#KbjsjIq0LHPlEmhJR9l!h<%fZps(w7W4jxw9zR1{alP8}p=AhX zUiGVRzvlZ+&!(m1l*j!jrgtz#Gu?x7Fg-0aNHgL8W+I)pYjghz(x=cuH1%0;B}gW!#{#w;eDFQ!283N?eN#(C(8~9(j3r8`PVDs{zB6r)tQF#1+e*} z3st?x*1-M{@S5nSTM@4+`p@&I-$w1YpM>!%{V)d_1lymc>?wD+9p6p8y1#|>sPNhp z!Z`9;SKN>Kl_|!xW$06Ahw+;37mEE}%v-r1PkV&>eNCE?!Tq5&E&o#8-~amwJY|ji z^7)Y9VB{PAaxLn$6zChEYF{BpQHZ|L ze4mHQw;BG+zMs{25cc8v8}t#%^{!CZV@1r5U`sc!j%2&rE%k=IVom?^eV-sbHVXa? z>6JU7#%<=0LGS0uL|-FcJE!8F{y>a3@TX_M+xLTxAV1@yun!>exTiA-d&2)Cp1L1p z@26s4Mf>5@%4&b~7Rt@%PugSOhiNwI>35_z7vs{Ew0iW%YTQQyKP4OY%|H(xRQ+Ia zEmhtIli6N_6yF{91`uxFpY5_=*<%3v)&8NVvwB?b^<=*?4|qErKDWX8mtfrHapwoV z--e^$cDln+Kb-Ch@MGcp*x@#{^B1Jt`FauSyf~!yJksIz{9Vs;(lHJd1wKrVPs31t zPQOJC=A5vLM7j6Cu3rN_ZM^cEGm#%&zn?8>&|4AsGspS) z;~*`7-?GEs9~y3#bojAPhNk53S6P@&UZ|*lucF&g&y4f8L6~MGDa!W)n6Exc(GM^W zV16pbginzE+wJl69LoLl%e>DSq`{yMJdAwzfL}m3^BF^H(zPV`LzL$_{1%@Ndm=@( zi+%oz=kdQFycEV2Y8|Ay(*EUXHT)jiK`ipglme}k&~SZe-d470}p#Oa1N zP7cF-1bTR1brS59$D3Z7s`YKSz1E`N$o&TR@wVtUTc<03V9%%a>+>4*wI5LD!Qgk- zV6BGo^g+86KzjRP42nlSIG@G9Zx=rmq?_0;F@di^IeGl3gnD4RjK#c_>qGUYdc^0q z3P7$(56nwIhup;b(?I_igzpo8w#59rDJa(~+l@Vrf7VRx_kOO^3w0;z200)4^8n<7 z_ZN6Q$K%7uVFl?P>@fr3_hH`lENDFFJW#v5RWNT@4qoXE+Y#@RKZ5&jtA;9ig0NQ& ze$NWUUw>B7im(^P{}`$0GYeTRNDc20Z9smeOjPYz`~cBr@Vim}FGQR(I|M)S&ajl6 zPc{9$5AFeguZMLn)14ZBT`1;j7@yk?J%!xb>1gU*5+`~t?qtG8Nqd$Guo6kW8DI0dQ7dW3A<#gs~`o@3Z_jl&} z7o^QmxbKR1hst9t1y%P0YSI_;h)#fS?lI^z%HIfnD+o1(l6HT~F7 zJbzn(@fJfAotCC(?cpl?$?p_DRMQTBDZYWGJv8O|Wj!ZODf*+POP^7C_UG7B{zcL8IzHd;`U&NKzmK|)dJO%N=V``JzK>my z?t7Z+p&(U*Uu%YQK(S4@zZ9g4vJX{|X2On{Uyk)GwJu0+)+72A_1ysTTgKI%VKLJ0%;~3B5`M#nz!OmSYMvjyUmH7DjZ=J{w)k+^ z-^=W$a89&5{K@bHsu|$=Ht7ZUscOi_f?pNy8HKXqzU_UJa0Ub68xwF22jP>hv0ud3 zU?$*92Kb~EDnC<9gPMasd4$h%nzXYm)||+10{|CA4=kaYP$p0^W+fW}W z+@zET3^$t)DrcEPuJODo@88>3_5t{l6E|x9JegGaUqcG3ZFp z=nUM)OZzw9{C7SNVNyASr%WtSx;D|y>aS^sY6 z`7}iIF(~Kbh)$RB;~IYf{`a^OuG0Ai>0I{{od!KrK+(O4MCVZ-cb-%CV|PD}^CT$u zB~U(#Vc(~=_ci;8{|Vo(w)ZV_?{nJwn`*yPrSBb)Kp#fqz6jbbgn1axKY4vwWJHjT zc1C@I+V|s6pdawON9}h8X&GcY4YJSi1*zUR-q*3imHx8OkLd_i1RaEWtdH+creYoT zFeuks5zuzf%l+H>#vQ)BD#q)7$tk^^pbyoTCxM^ufn91n3qe(U75*Z^UxA&h0N(1BTmLAnpYyi? z;S1JcZxhrm?l3dOo~pyFF=%K78B$`?ZTKIAW-P>iKTI6allQKZuz<@{gi zDl<~?Rlpxa|EmGYZ!c>M zx)lA7saXQ!#z@=mD)|)PwUCb$$PcH-^s$19a{Vy>t>(F1R*X>bdLtg^zn@NbIQRtc zA<#=mHw*ME(tQ^BFENbwd9lAalj|Sr-5H85f05?{}*;L_U@w ze?y;9{@~9;OqJd>h=0_Fc{S1tM%X{jF*@UVjf+HYqntCaAGdR45`DA{Z`Y}nM6dn8 z^Nb|g^*xtU;at9P=#V^r;(hBznBx_z!s8F#mQsi1;3x0H{xceA3jY^UqfE)Tf@J}zO|B@fj!^IesoKZ>%ltM%f)=;(OyBy0Igcr-si^s zER)8VM!OQ@Hzv-q66lBZD#lm$EXgKma={3wN&*LWq3 z*VcGrjW^eLyHQCr8sk3C(=O-3IH&W`Rm=6%aswe(^;@;xU^(9JzJhfS=8g0a_UlKD zs!0`4j?7U(x;TvOD=5!ZJq7;G9qb8>4W!+9=zXo~RpH{&> z^vtFh2ZY-CR6cegAH6VMd<6Ol+VfDZeDL^c>)Cye?|IL?X z{B!)s`uk7%u8E(=IzTAKhoUOpRUN;D?hgx4evV(Rtm-fAKzATN|3Ce?^Y>{M>oIAs zP=g+VeKX%osPYG__nf3(lP;{n{ZQC&6An25;}1O~ih|FW9H& zdOd=A?G1l;9JC$$;rE~)dYD(?SHSc9<4;hYe=to(y)o^EbeZl)yECnXax>k5c4vws zkwTAaItJW_s$H^APDgLX!{R}Ll7nBwfO zlIZk2-bXR12iA`b5TEH=nBUs|VHy1Wd*E~9i*_qNVaK!OZQh3?=PNuu z{uJWzPwDyhco~#=LH?!~6VYF7zwuy5`MLhN#vdM^9>n}+EN~v54q=Zm(k|`rS^p)x zHOi&@it1;~{|h__Iuma34i!`l?6V~|GBNyK<7oV1k4@L0&db$aUj~eqV zR(H`Jni>&~H9pOW;N!tB*Ye#au)G)FDkA)zjXHu^$#nA4>za@KOYz$jFZt~r^3qok ze4mh?ZbtC22>~ht>$b}`AQZ(L_YRM<($p~*-y;{_FM^MUJURr&kGfCFmxso>!t>C? z2tF+oLyNWipF{A(b#y*jq4_#3(W;b>)Z^FIKamD&Ug=MyQ4#V6CDIcS zd_4GPwEPqBq7|cy&~uu95Eed`iqJyMcLk3xLelbx__(J_>vHk0=i;|T@bQrUSn*L! zer9_uMxSZ^U`0-^7=5YvufZ1pe>x&Q)+Tf|7k?=ieFREkGS}f7N#olQ~HyvPAI?KMARAGfdN;&+5HT>S3PXcxafG}gr*31Mm| zzkPnzmlhiD;!lKfT>P2PWEX!f^o)zY5}M}XZ-i#J_+qkm#*j+yUTBUhJj%ks)*XYlDmLZf$b$eXQ49 z{9x-%7eB&!%f*kewz~K%YrBh|V!i9|{MM3*E#7zWJ3>2M{O-^PE`ERLLl=J}ghrL$ zK0oVA3w`S1PlOJ-_%k8itLC4QKNmWxSj}Gvec|G7guZm~#pr~KzZW{`;-jonEsr)2a=UjYM>%5DvYh7^hjjT&9zLoWdi|=4vbMf7+8!o<&b<@QU zwor-kQ~4QT-Er|_EKE2f!m})oi=Sd)Ii`0h|17r#G*EwPC3 zBcXyWJ}ngI;!lJUT>P0(Q5S!XkHkmlyAtAiApG0s=ltCWm2vUKsGN(x7pmamqpV~X zA8S>1@rf3;iz4)wwC;29NmeZvU)8GP;_F)VU3?>}fs1ctHFohGEG%mx((7(Dckz9! z2VMMN3tK}G@*}L)E`E&F&c$b0?Ops7tE0p7TNEa?z^y5*kNF*;E-rp|sGE!5AL`-a zkA!gKBqDxV=y4Z+B9!Xl&x8iL_;aDbF8)ersEfZ5!lWufe=)*RGJ?Ms!tyMFkFqjd ze5^Ib#V1<0B@!WD(i-RDldNnPU)7r6;_F(ITzn&Iii>Y$O?B}dtm!VkJAaTdBKhv&CPO>FU!i{BAi?&5ccR=W88p*1f4 zNNBx_PYZ2y@h3vBy7)7pH(dO=&}J8ZCA7uG-w17U@x|yJ7k@AGo{NvNcDeXiYqyI} zv_5k2C9RKLe3JEvi?3=OaPf7m&s=;X>xheQWgTC*-+;Q>8 zta~p0l;!c*{e$!Ki{*3iSFI=)f7^<2@i7?%9G>T&GpsllKi9%*+;#us@TFFw!`J?U z>jSTjj0j(C6?5?$tr9MNi&fgi@3G3c_;^Zk@dvGnF8)AFB^Q6ps^a2LS@!$x)%^7r ztA;E5s#V9u-?r+z_?V2w4$t$o8CEkFKi6vR;+I+vI(+}DTpukRp5w2!TDka*R%;i( z#cJo`_gIg*_;~8<;tyI~T>OEUZZ7_q)!oIPviKeo|I~cx7wa(>f7R;e;%{36TzpJM zn#1#aWQH}u#m}`yy7;A5y2E#s`Up8Z$6sw_xcH6MXcxc58tdZsSXnMUp6u^5sQJ-B zYl18MK+HrJf6SWf;!j!6y7*tLX)gY%HOs}{w&u9_n2ZGu&+~~H)(b9vuC>I)FSV9B z{1K^-We(5rS6jV={I-JdejSti3LNuJy5tUux}l_|f7&K5=-CzuG$B;x}4{T>KX6 zh>PE2ec|Hc=_?n1(E8fNABg$J#UHc2b@8XH(=PrO>jxKq)%w}R-?q-V_?V0f4$n^$ zBxYQ3@uf4ay7T5%K3|6m#(_GD^Al4H-cfza^uBi{F`%?BYMosOsX6W!&fD zPiNG2@#iw?x%fXb8oGGOY~tecW;S>6@tG}Md@!@Mi?5v7&c)ZueALB1klESAx64ei z`Fta>71uShr^8PXzL&$R`xm_(ehco}^viU3fALyGgClruzmb`b+49n!qci)s`0UKb zUHsI{R2RP>bD+Z~p?@vU9PIF{|CP+4E`D3)NEg2^GsDGyk@>{`E$-PLN2+45E7D5BAtkU6p_ku^Qqr;cJ;3?tDUT{Kq z-V2@^{`qr{+zh{Vhks$e^D4bS`0ryuWVQVfH~#*!#{M63E?ES(cDpOAu}kccF!#>z zb@mYSK#1p;UvD2IcwhL}_OWO>1L8>dM!O%~4Q`#k3*ThVMxX8pZy9xOvge_z?0`{X zX2?I3*ZbfRf}ezcV;>hV+ut4bP{BLHciQQ!9C$Ag;rqMW?iai-e2;xDn(uFc z{cAMe-+lJ&XuiMu>?hECfA`zZqxt?GuwO;*(3SD{vEPc z6#OLoh`okj5^>C4Pp~KAguQ9NZ2!Nrw-LNE{FJ@3;3^Sk>^;zY|IXR_qWS)vvyVgb z{X1{B(0uP~QnBILD-XaNJEVx<3CHo3= z1$dO!qugctSAyF{T(<8=+t~WPw;w@Qf=3zkBEGkuLi7B6Z@-B4z@ws05HA+|F1The zFAw?fD5Y1#6?-t6=C3cf3HpbzFuOP6s=XDO=C5AFHT&Cw+k*R{dH$~3hoE`>uG>eV zdH$~3$D?`vuG_-}zZ-Ggz6QSx-E?28XEC~{UW*_*c)-fUMx5%;-_0QlAuSug zTeZMXFy4PP%!maysn56nBRpE`74eIG2znE2uO2v!c@EiG0;BrDr_g87HDFW&T>qp3 ztgis#8=2>j%5z}`oAWpOL5%+b>CZ;|X8#@IU(bg6CE~vQDaIFoZ$|uKm)K8QbI7)Z z@Wvo;dGsRicj5oD=cC7hz2*LAzmGlvt{3speyS18&m58jz8L<{UgdS}Tj=r3f%@v9 zJ&`$={G14HEQRIgpdY}au7?qi?0M+MKI+Hz_2^jUC-!gAlbHXqA3{%O{@Z>I-H!Pm z`z`cf@V^mH?ViRof4L;I2xiShKC_n-Tp`lts4Do?NQa}2;6{-yM^nLVB0Y}wg5Qrc z9Nh%>i7e~rBX~$;dB;$}<030L5(I}wR(7ls?2D}KxQq@SPxD*baZ_-G$U2UDf?tiS z=lD}_qsRsh!hWL6g&BV^n>4bqLlgXdWHU!a!F?iIIBE(W64~0(Q1H0Oc8(r`!y`L5 zA_V&)yEs;(X@4d=@;%3XG=2V&7x{tX4w^o%$cqedsPNo}o)3CIo)`I{qbZu+kLE@8 zcl1Zo`?0*pL5?^yy&uVo9O9r$)BEQEP~TN*G~AJg@k5)SKM*;>v4NTQ2lhseblehL z6gkTA9<-Zue2DCUk!q2n9lgNxzG{@^7$~?wRD>f@ zaI>f=M?U&g9w8l~Vjbtu^!UFYHPz9iIbR=j2uX5`VD^#EVE_6?B|CoRas0hJ#ZjgO zOV6Ahn&L18kBCZhj1g=_WjL}0r$%Kv@&wO~n&&vrE&U1oo<(IAIi8{u;rKMv7dad) z+4iJa;FVE}92z?EEPO>fYOx~-oe16xuEv}!9k>m%A)}T!>M;AHE8xB0COl5oo~H4o zj()iOy>ayUeIdBkJ=IDq1ES#=C z&oKi11vrT0Ig-$a2f^sHsLvf4=!@Ws;IGkMJCtX0xnmnT8GJ2jx#J{yYAtwUThteh z+vqvqpTYDkMD+UDz_!1_@iMwzTRMJbg`*p~M=O{iAGN~KmpPf-hU5PaxPaLw$%AS7 zRgR~a{^&>W1%>EUjtOiCL@wzL^|J}~qg%mG)fK=wf@?;vapVbZ8vV6HZA!BxeQ(reZtX=4GHm) zkO=xM>64C6(Dm8zJ>{6k9B6M(IX-7jC1;_23$~wfd?qdwBr=F zv>V!y_0gvtQU{u!ROtfq8Ak{7d}#M~M4xp;qc=03b8KYJkv@L}qZXsjJ8q%#nJ+jh zb|ml@$lpar3+BLh#*2>8f=@?ZbVM^Jv;19(zT~*goGVTK0p4~T{k`KUIvIQy{9Y%z z{yEasC>!}b`idirIayNSr?)@Besmr1Kj2K}RO$V`w0vH5%tH?Yo8YDB-SE?7nV4&i zRp^Ug1-t=$2l`b}=6Cb$6oG3#Z!`PI%g~Ml$J}&OdWWX>k#kU<;EHx+F+=+{ ziq@yM9P`mt!JEO3u6+H^p1|y>nA?sT=n7E&TYyI}&mrZZ-n$rH;`oZW#1^rTmd_H$ zPM)5O{*RD$F(r-zf;)qY(e$VK-Z6I^cfo=3N9}mG)C0gx1P=ud0@L=Dmfuff?mET@ zo*46!W18Twn4cZj#8^>KV?RQ0iA2Ao&9>Dc^4AOgg(B%tl zC*gWL6Z5a58gnwa!~CBk7~S$NA(vyGIlRm{WHB7yTQN50#1H85KJo#a-}o52vwTnP z5xe25W-$(D8gn5#|L|pY=X~Z=at6vX%zbfI=|$70l9%3xFMPzfo$Z;EnMthMIU3`y zL);T9Ig`*GkI?01X9ly6bO?pnN-^LNx<05MA%8<-6es=43(eo|IRvaaKkiMPO6uH! z(fhHQb0TvxbLCjwd5PIaQlY+_P|kG5_o3;N$zM^lKT_5?mpO+t{{&_f#Flm5LU&<) z$@vt06!x!vY&mE6hje)#sZ;=Gt#gp`7IP}QpGdbVI)4?MV^wlK7QD!M#Yy_o<$3zG zR%NFmINz$~tR#4!Rm(}=RvbtlL|$_?6nxC8<7^@Lj1}zcDEOMyz}a2!ZL5)Upx_5q zQ|Cy*PpxLoP{B%QYv(k<~i#NF7PgQHWz%zyVBW7@Ja6)=LdqvdcSfG5PZq|weu6fH@usi69wP#ZgEBl zzVF@U^a+0C-R{f~{0iCW%oY61yW9D>V96?Qt`n?V`<>eaSF{c~3j|lS4mpnru45f_ zo)_HEI_@kM+}t|p{8?~Y>$LMv!CkF$&S!#qS{Iz20j0-(fOXkfp1DNk<2kN4Uq$or z99Nw5?dtG;NSTl4xZ>=H=Hof8I785UJjWI1a5Nv!am6{A+eYvI)2%DcEWtU}Rp%&L;lY;kIKRE9Q4k9<5{|Y{4{pc(|kmZl9f4Ozr*--FW>yERF;C$<6=P$?1CJ|3fiYo*{EtD$R`;6>K!uG@n5 zS&d!vYY=pQ=<-1@C%@c~QXjM4bk!HU+-mOXBzUdW()E$xe5;KsT<{sIy=$T1YgR|s zUctAm&aU4DKd|0)RUKNo{ioLZF8cQDK>n1_Ual-OA8+xYYop*CtFP;j;6+w{*L}hJ ztN|`*7+)VjS}St>Lau1?O9zxTXm{V~uvL6nxDZ=Q=9* zwl%@^x8MiX6j$)@()>KNLS3H-Rzjm(3(A)m`v%YrSiv;I-BUSDfH{YqM*f;4{`X*G|FLtR1dm!MClQE^}mQejZqR zUF`)wwf4KB1uLP4TpQ8!`C!G+W3KN6R}Vemx+%DR=qZ;2?i=axr0JW5o^v%2{C4PN zS1-ZcL$A3k!F@xEUGoHw2)*U{M)0`MJFY8&BSL?1{VRBC=x?qnpO$VvJ@kRAwct6S zf4YVWUKaY7YntHIp-)|32+j{B?t_ANhuYmg2|g0)b}OSxw|6Gg<8CbYdZ_O1E%;7o zS$BlsKSP7up9v;mmE79|t6^2#X9Wj^Rd+uYTr=!d_se5Sw_iW3j=P=U7Gd?>!v((` z*2tYKxO-Sr_ewNve|?>rxr+pE_cnK56I|eJ>9&pK+oS0ZdE2<_3qI*>?+y_>*4xod z-|9}w15JO)+u6NH@C|QQcY)wL-fr#^!S}u0-O9MqyOR;;@~u-{5> z-$v8^fUnauw`(Hb9`$x_qPwc#0&kMLqu@i{6!&<+C%rS=*@DMFy@Dj<7?`dsw*A_g$ z+TrdZc&N40Jznr=YmYli@IzBDkvcz?~+z zj`gQ|z2Jt{WA|CX&8@%PPXxEMp1P}rm2R)A^~~K_a8Ju7jS@V-a!7u`LoJuIR`6&` zmQD(uXerX4f+H+ldL_JcdvTU2br9^g%1NK1X@AhyDM(5cyxm(tS|Yf>TS?j{_>i}< z^t0fT-s+MW!M8`(H`ZHAYA*Pax3)A`@C|QWDN*npZ#`+1;QQW&(lNo0ysu051iwO> zN@`^3_MUm)l<4muw0@=Am#h}j0KvM|N=gu1(P}F#7hKh9Cmj}C$Lb*cD!8H5Nh%jr zy8h9_?@P&ods;oD6@mv?y`)0HL#^J@&w@u=eI+BhbbAx6{!(+n z5!N8-Bf)XjU@1|s-x?;ZMAQDKuhR&rNbq*=$I>;y1>TX8ErxH8ra$BzE!7u%(mP%X z5j@sANs17B$vZ__B>09mR4NdB#~Ut{2)^%)l9bre?LG3wNDT$QLgJ+!f}eS(N}+-! z%O`y%Shtd;-GVDxsnSisRjo8hiYwh-9c!l4NN__dQ~FSFb1Pel7TngFEiDz?)tV5HAvnTXAuSXfXRVS71pBQu(rq;D z|NA%Wq>5AYR-rW+J zTDrYE-n~*C!S}uUrS5_sc?+e9f?pwrqzu8&yho(Xf+g#?bWyNweJA}ZxT1Ahsx_^2 z`&F&8Qa8bMtP9d4!40iT(j39ftt--Y!ELQ;(sjXItzyZZSi1h6)=jCl-~rZcsf*yD z)*WfQ;L+C4QkLL});(#f;0Wt?>3hL()*li)+K0aq8$Ex1>!I`-^9@_jA9TF#BdIyM zBJ{78hW#bIgX#JFqo-0YjIV@#?os7GX%NQwd>kT=#CTU&{-{z$o`i8eKgA(OVZ8nm z8h6P)jPv;#k~|aRouGa_s(9pi80YgBRCyW3TSNVERMF)%80X{pO?eB(N5TFbRbG;J zGpFG1zvbmiJiW}vPnVa?Bz8PxK7Kk#eh1CRPgjsXVD?GF;JgKq3UYsp^YPRb>0l!t#@2tIOenBV%jI3Fwz#eTlKJ$|-_p$JUlJ z(T|(M?{l%Q$@2tnh^-^%G4uQ1Nnv&6hl0byg5`Jp?0B*JDVxAIdicHwqslS4ySp_mRZE3E37qOkT`fV&mh#hs(zWcMcyR-xC}X z{;^zRI?o?XKRkS-JOa(fe~*&C5>ZOXKVc4xmq?e@47$EK9e&L&w@#LF=<+2t>d|3e$z9QPAH&xadaalH3LX{rwLFnIaK1Lk zxwGl=xzYz;z#D(#HpolRbbO5kUW=yVYpl49@;7KYz9u1VlU#_V<7*P)Hp{2cbi7LU zvRmY9XgXe{cElF>XEYtJG9xZueuSpuRc3?jb9jE}c$MyDx5@^Zj#sH2u~n{ursGw* zm)#}@qeH>9Beu!S(Pi$yc!s!d*gX#D%I{xHX+#dN8G#yWJ2RudaZ*hC&1T-Blaxr|LJVS8ph<$P{nvUH2#SE2l^}U#qcBYzi2u> zgvRB0eE;b95E>6c)A1qQ%N~(yqR+tjqwz+}f%17orc2v#zD!+5z(uwpa9>h6{usuK zY;S{W#UFoedLPs{{^b8#{?zk0UB0e-=DF$eA66?hU;dojndK)i{_DKlU2qUNFZUIE z%(@_t6uj2DB!>w;s$7v11j7hNIYn>~c$VN})^&M_;G;^h{H5SGVsFadfdl2QMf{I) zF^lK2@knpS-;#er4}t6Zz4#KjOfEkkjY8myo$+_&3g{tF-X_HVEZ0X*`U%F@#NU%U zpy~CH8ULHSOYqY8`|>gLXt>W<8~;GQDtK%BpYj9rlM66jDE^78e#W=od@{U!GX8J5 z_I&PEu>Py@|H^)JR7;p&6#t)`gAVBhy zr>FJ;zJBVL6WpFe^sr1C_jt|;emOz)G+D^gFReu5hQ}}X<%F`HV!^K^l=oV*jnJmWDQ z3(s-aCN%cU6}&B>spmJe2IFV5oZ7{+6n$wD zjDMQ?j^|7CL+BsZnEI|~6M74jzXns^_gq2mg7ej4>Ia_R(UFk<4pV!1>MZ5^lX9NA zw`VB&5sQE5S%S`l{z8wb{XFN;pVTE}@YI2xvdj4L)KjJo_B27i4dry^)L|Y!x@i&h z$DXU`zox?d)YMU)E_rkhpgc1`vuN_=V?AqBKj=@?oX!8^we0%V!nBOyPv1cxG4ygnE+Tv-; zJdQ7EJcnG}248WQw%pSNT@K>^Ok3%xy_zpi%Zn{>m8TIpv_5<-J8`wA4f=<8=d?JzM_`6-ZKK-2>PE55;u6JpqoPb-7;~LXDa#+=zr8q+~S#yE(7&T z=ftg^Md)8@!hER2Z#;$QrLV%5b`y7a?xX9M5Hcolr>E5#o`33?#ND0@<|1i5^phLv z1)e$FlcLW2|NAr9k=$%te@={hsQ~f&3is)O{iS0nh6%q(9(k`9k_a56ccI()j)s zdfsO7TxsD{_{vCPp{FZ)6?h>yggMavJs4Qt$&b%LPa2B{@?Yf1W)AcZiad*%d47XP zk!K~hbfy`d-*CvY9(@n&B!@iP(C@MMVb31)2o^u=IfTCEr^_GloD3`vc9J8WOK4Yf z8b9hOM%M&8$x+Ww=&#n%@vp}`kI?(UCfEW0!t(*i`WfENpLpC;7VQUr39gQIdg=O4 zcp9S1gPr7rrwzL4PI^D^ou?D}ZLpJk=jqN|C@)oEK40QVPhaN1@jK~JzhdW~Y@A5P z8=v&>^Hu1a2-j0Sq<_NWHtK@J)1Hm%S$bO^@ae>}9@p2@x7hvNq_B$~LvV58B~K;6 z_YyCA3edJtLhdDg?~yj}<*ADkuXxHb7n0sB3He{*RnJ@Kzk^{EY|M2}t&ME^tCk3XM#45Tkeyz9A(?({3%PxyZJgly&UZs0e4_dEqqZ_)LiPN&byfAbW7!#%n= zd@a%UyQkT9>Ku~%2O;nH{_uF2edHmWKN#WRS&n{ShqZKi;Q0#ur-S-`9(4y@K5+d# z^wbg@L>_vYGMCtzKzrQN_ot@^x)XSi@3AKX{opnDvWf4hrvRN@hx(c44|K1gaKGg% zqmXau_DXDhpnhNDb1HSw$DYC0Gkmhr1l@WTAv=AF@)mOr89W)@=I+y!N8D00xJNl% zAy5wK{;y~e+_nQe5A+$zDdxcb8;Wli&mZ4kL-C{e{+3l1 zqxt?;Q0}7n{=Td<+s&8f`&&h!S@1OJ})HBio?e}I244s4*@M|)!E_8Tfs(650_ux&5PzZBMt#v3UzdKTCOzl8Q3 zrt#O6SI}8t6Z|Ur47{o>iZoUlpznZ9a5J>b&TkXtEoPro3w*`bM0p3}=ii3=U0+k> z1C0L;egGcGT!{768%lHm&2J6~sSaN^^u3{^F&AR}@TO9T=Jm&$%2Q?^=>_?P8R5#y zP|l&f#QLk5(u&zfszd$ZOlqzapk;VI?M!N^tlm%4`$z?)$pA;-b_S9c{$a15l+X3mucS@2ctq@K!We0k|pa0Yl8PcQkQ{+g52OZgH#8@vF#5&aF+ z7kNn`%69ZI@G9^=bU&y+@{)QhN6_QItH9^DNgk|keNrEV9HaY_DvgBW7ezi)B=jV( z2`-D~<-M=+GMbn7zDg}LFVFpywrF0S`zZs_ygc_;Mxc3l?yrnP^YS`CvCzD{4p3sz z7bKd$fl3m(1Z;w5a$|pKkn)A#ATmhFXAYFdkCfMs)BO#UzmJrGXkPw4QnHx?G=6>390ZDfwu+{Pm;>N-MYzpmAQ_CMzE>=aR?KFh4D6vN90e0j|5>lBOt$ z=t1DWl0uck=nBw&mr0IL%Acm|%O&-}N^-O^f;mur588@nM{G_A9cZdFdmvnpI6OLikN-UG;k1^p`66{y@j;@pRQcQ z_@CgFQRzxC#v4wg{l%HeU5vK|JIPGtA&-;)Abr#13?=w1J6^2(w@S`b=sf4r_AN)5 zDmaMbD4EQG>tVK%kLLZg*~%3(FYmLJ`^-MlY!=P`9OVgfpnS|#UOHF0y&y7IsmU!B zLjAj_%sizYvrjq&c9MC@8yJ5tk{+L2r47ahfrCh{(uFxt-+!irGv`Xj#uL&hdA<_I z%;#@*121DvWnY-@mApXND7bI(LS+Tq$J71;e_#7zC7+q6ACkOOImhf{%a2a}TnWBF z)B8yFFHnAxS1DC4a^Knv-=9ccryOO@A+cHTdr|TR?3`kozwj1m9ZFq)CIoI;J=_aukq!pPl2yF z`7bGz(N5UjYyR(*Cd_jPbz}cECF43xKZh)Mosd@k8_E@QJBWAm-&TGX{GR`g^3o4{ z{TrXb`vLqvE5Xb@(iY}-_xImZY8TVEk4%RA4N3k($z~4JKM$2cj6c$BWSsw@^2!aG zK2YBNRDzlL`S<$&RDy2OcwqTQN=;^-K8QS0ns7_>dW`ZvRyw2U^*FrVV`V6_k9;xH zMiTr_lt_#}^U?a_FC`IOE{WD3e<{b&mqtOZ{C_Lw&_97Q!1f<$eoEw8&|i-t|0oJ` zs?-#0g3F^P{zupURH=fV4mQEBp>Hmu@qd*@XlEXc|Esh>XTf=jBL6Av(RpAKJeave zZo`&;ri{dRFR)3TDHAb1^c|Ql?k8$E#=YPL;5p1UxqdITVtGX{!CWH8!}S$KWOXjabHFBe6M7(v!|ft^Jd1nO{pbX^ z&ZCH;oi-~AIu+JR7O?Za34&Mmj!kbRSiPVpHJhOS{1z=>?E362fdt?H(h-b zy@!=IU8P?mqwBl#Eg{2HLwyge!tv277%IK*rt#&YX?tv{AECE{gNUidqt~(J%c_2K z0a&k4Ry~BC2;()@`(IK|q7%Sd!1vJ0M!{D6<Bo)-9=wAz9zO=uhx(Zze?kftw z2bgoEa=|cu&RT2RoG+sz}|F?#Ei`hq9E8zV!{+epY&ou6n{$=$+O?3=< z6RUq}su}1Ac0XKGUCMkz?u=f|9O!Spr)A9t{V-B?cwN(05 zP&&Ul7wY56@vo|B%sgJ4SX=G#J6}Et+S!}_*VOR)+>a9Be$*eVR{4Xv(DqgYUA}?Z z5S^U||2w6jx(fXm>c8mDjnp;hiWV-`KljwRm(r(9tHJz5P4TUhfXb|^U=GhO&;_3CySu{PI*tQ{e=7AXlSofdZ>Bm zeVK&xOzEZO|3%}uqzlv+LsCN2VrFQszk%_-DSgx-fAi&=Kz$LO(qHZN5BGH_PpK(` z)loCLprrA$>9m!XFDAwpbEO;mTm?{0MYzL1}s&Pi$y2Y0~D>P&StvybG&(({$6-a~&5>Bo9!smD>O|&b@;w}vsvqX4cQM`-%F{XjY?XL;`j@6b`qa7VE#@5Z`4#wmB=s}3 zhQi|$!0l7#tGCdtyTTUikz>&_Qt%v z___J>yk*bLpXYu4-28dos^{j<^VU2!f1dZ%bMxny8=jj#&)f3c{CVEifHnTS@tf!V zx+$$spWB%P$8%t6sVkqP<>lKzdgq@|K8L67eC|7m5KrCp+*ROsC#3FuZo2=kkOS%s zc6{J{OrvQ1drx#Lt5wj?z$W-L^d6|sqsS4p5&AsX1h+t6lWG2rs_oIggH7Ol1C@Vt9bnd9mRbQiFb99PG2bf)A3vjQ_rZIm;=8zol|$9`S_}H>Txt5Uv*Bs z$IQo9tw=quss>$u;Qru(n!_BppSYl|5Df2=R=03VW4hVMy3~v6PV~cMdVDUb2hdJG zJw6xJ{M7H&-v#eVy{c9$ z%gYl#{y(VI(R{q@4{9*_0rY>P{KaZ>^uOTY^@`Qb=uKJl`+zsp?&xp9A>@YI7ybHN z8o#MdL3aR$keg}(dhiw~kNzLkbo4~<@OnS0^SKFqUtUq_Ep-*fcc#+&{oCr-=p*1D za$Efdoj8rgOVqvSEN~DhQ4e!t`MaZ@5*$SCsNV}dk$P9X&m1@(KdT#GV&|WH0R51w zsXwb%nF~qxX!w0A^%u2OIevbqFGl^Uc4GFCH=(`!Gxaz1Q|7?$arf0|=2VHkAML-? z`)VRjFVXj-$MZB?GG-$x$6@d%p!K<&s}Xye;|sP+|HeflG;e+r#E zKTp)fEY8bI@btgbb==Yc=qEIu{;0q7N8i6k>zk))9@-B5F1SBc*PwIYc@W&6s+-VDz;J)6ev9V!ga4`f z(foe!KlKv2Io#hZD)US&Mt1`{$uspQ^x!`9dL!B&=*eJcvb4X^-_Es>=F@FjnF?(G zq_g0*UeM{Cg_!K5YlV9LmP|U!R*wQ zpmSONUD`_Y*DU`o?Q8U6Sl{63ZfzTS9r$DLUNpbol(a)=e!nScr_lNb@V@8ivUUkw z9XuI)1HI}^dVD;eJvp z&zvlM^96kGbGoKgK_3C9frFU?_Y1mKjOO*7p%uV5tU!HtFVWB{y-W?yS6nudHQm&* z(ILtIYgn1bPr>nBFuj7-fjNh~49D~H>6NsB%!M}IUw=hQ#PnnHV6`cgwGmbL z@>?A6{C#>AtpI&xKlCrBSJTQ@9w_U%z^s5u6C6h$1B&>ZlQU7Tvz)Q&FkY}?N2nXkAt=U z&`q||>#3gRf^jRfzt9y7zb9%2H`agkwI+gtNPX>XOh2#=UA}?V13eLJfjT#Fu`68Q(P z39g9V+MKTcO|3TiIM@Wg!JI06P>=RcnrUyNM}vb%GwlO(7|h>@BF(ja=nSw49)`Zc z^4~(6fc}N$zl9cqt{+Ud-%?9Ow*i~rx#;t3`>nLk1Ix4Rx6(GC*RgnOZ5O(L#anAf z(Fapt{r)!EMKpb%=kR)MwA*Of9^IebR(pVUmxuQef}b%LNxb~E)!eVr<5wi{^4C_A znNuY_lIH&{tt`3**aW}AjpeVMR!eXYX{R-14)kx@Yws~9OHIPz_uI6$wcgA=sSDT* z{s`k=!+rY7dL6V+m`h~dpXs2DXHLcWKOMAq^p^{1{yJ(a(0joq_!v6>I~wn#T|yrM zo8S^=zw|{4j9(|6wcpT7?m&AS(^-4O?31>EPe*swo-yB$>wjT`?>BVO%GajH%P-OQ zz($cS+9>85wg)?D`YzgbbP(hR?y$51=D_<5-_cGnrxH58J2~bZZNzKr`X&QL+Ti!Z zuG%hUAGtP_`dw{c9U6zj(8kB_^wdT$^Z72PqeHa$4fy)$`}$zUh}NVb zPtV8i^w#>L`FNy0+6ZQNKO*dpjr7qzY{b*^_Mnf}56z!1_0fi*kLJ<+`%oJp_+DaP zZ5Nu4KkBEIf1R(7rY}zHuXRB4@kj%-d}cqX4E4pNuz}i$#x%X3T!G_JC2f#Knv}Xu z+F&gnJz+c{17e10bD5LLkMJC&RoXCZDRT~aZ#|4xO&g&VFvI(<;X3M(Hd6aRaG$hM z+5_f5|8TTcxhdTqZy$olXstH4^Z@#$QDltP5KW*TYJ!`iV?U+kYpm7|Jp*ilyK>|8 zH%L7Rc**Z)K<7tOE#iP{SEs(G}(KS|q*{stUECTS1D3 zmU5Fh5MQ5^pdCUtYX{{wZK`%ous>~@)~*@9zUcP~qSAa?H^Kh2BrUi(jl=V{>!aU=xR92sbzt_9%CLX_w9m9B%sC`{ z8$3@=TcFi|<3Q`nU2uN4lyCqnwa(l%-5(F0ii^R;4hRknXy zwL#F2qWSrPrQfEFLhoBjm*1gz(dip$es^i7m~$j$7L2!?QJ}Sgd_w-PzA4Z?VlI+- z{ZXKOg67w2fi~fV^!v0h9>?o@pO%Q`>Gx?nm{X<58gTyn`?Vsp4?Miye(fCks*T1E zXgAPzz{Beu(0*t3NkOl{`|oEIYERKs!6w)V=aF4cdGz`?sA=eL!SK9JtAPITJdGD= z)zFW@Cb%v)?*AdJv0!*!r?qDeJYP7hjY9MG?y#1D=Iz^ItxJ2BA6(xNZN1Q0SA#28hM*9KM=P6`i$>14gD#&8Mq4iXJ`-F&N!*nLq7p`1h+yTA4cidqTj>AQmCtMQ&_!UF52h_ecOOfS&joE2dIT7r2WlJ8W&6|T zJr}ian0-=Jusr>uR)Fz!i)j8XX@}8!!6x`LGk@N6G3v5*NpSV)-)oKz^!Nv!M_tvV zj?_NVV>&#Km~mZehNjPhde8Vl%V17s&##8gxT%GA;^|K=fZO32ceL&3bqxv0n(>n+ zcjoaQo5A}dX8fjAV-DQE-`Czi^YZ(L)(z9EQ2zGM_(QAFg)iTD2t3W5@jq=Ya}Mbn z3-`w}9%<@3H2(bglQy5Z#KxbW|E(1W9`pKBZAe#|K5+m1OdBQmml@Br3~uSTpFW?k z>F1b>q{d&;^J~+KxyiV%VEp+EoBrfoy1pW^x(I&XnNdbx+^y7Q((QWf_qgfzb>Iny z4vA@cjjzwCC$e~|l4w^pC`8?63FF@1hIbVWTpy~4>Bi*fE zMbqa+M!KYzf1j`K?RoIN^>kV9f$qob3FODg_eXhdzCY>=p`7NhUMDJxT zuYb-QIDbL%~J$-c_n%+ljaDDkY)z|xe$or8IJeI=}q++%&9n@`At0s&BuejsV_#u54W&C&Gh}~%3u?G z3a#YP{cWyaLe~bv^BMgHHaQS z^}ZPA$E%J07nMj4e&f1zEG&Yh5luN4esyX(xaFI=dYcf&K$U2+Uauy z*G+Gye<8SW`rA4k2N9?rz3CnF9fG6NJL!i7`_kXh%MW1bB|5$-GyOfi3Yv~@$_2lM z4oSB`{C&L<`eSe|xCOd0IEr-F+oN9xo8WiR^m@rl@1gfX)9Ymwcp!72Jb$21MDyd@ zQ@@Jl?MqL+)j)py`SI!o`K@#8y4rtNcx{*amXN7twK)}@d5{{A-H zMz*H+(M@Kb^f$NwT!lICyyQc@3y-tsC3WQwb!l+v_Tl-1ULMWQZ(qG5Ge2Ly%;=|o z!W?LS2IxsVE^SVt*Z%-LgU7Kw8laodPSWzR650$j z+OL6nvEVZ4gY9uK0nc`jNtqC{&z6HC4Hp6 zl{t{#PxZZme@OpSKhG_ZkuV-HX^egit$-JROVE?5()d{YH*_?30r)XDUjO5C8`NWg z3eb1}M3ocHy z^yADqFqahOQ_l?5pP?_q@jp9p@QqpOw#?_(o$&uGSgG^4D<$YE_fdL@)@|Fn3<|CL6?Bv2CqVYluWOu>H62q zJ}C_BB-8cn%z^u@G`-6xn*YH5rRnxh`Toc-E`4Rx480sP-=9fg>3S`0Y3$!{zaKeM zuP?+0cxUPzFh1;CI{qBluOI)uv z9M8?`x3BdP%<#RKm9V{;8}vQQf#bbNKPLEi`X>E~;PvTS^k0|*>(AF8qWSu_>hD26 zqV)W2)B6iPp1w^VEqHzUcHPSyIKDgdhk}a}ztx*SKaG}`Rd)$lGIOUsm^oEC1nIt< zxmzEJz6@@hzFQAx4z!)3iV1*k3jopb0RArO(go@H}+= z%p%>-49^$;gztyVJfzz#mOmSPPsV|nNAzlFy1t_`kK+APp>xj@_@2?s_;|4I z^foMgk&TZBJFSmk_K|9Fgj}C_Uat{K*B`jwy{xxn=I4K`_p<&ja}nYBy`qm`E+l+= zS9Jo4(pdpOGv@lS;Dk28PKXGT!- z^*x?>U;m0Zhm;)(_YWBl^~I4iUP$=yd7^KO;^z7LOAn6b>!a@hQ8NC~@1yg5gp|wp zSML!+dt)21GCCOaIRlL3wVeXzkq*Wd zo?fa8&#&Vlz7Ng&+Z~PX&^u1i{C6}iFegi|vi<336mzro<(SpcXqr@-pX7|r#wg|- z@-C#Gozd0EhkgbB|UPM~{)!TWkLdKlNZ@%!k#jEBs8e}YIaqZ714bUXrm zU&fY<5aWI38*&_Y1_?0+@Hl?oF2u0VOQD{#K|CA%AdB|TLySr(bbUTj1Nuia-UD4O zm8Tzp{ty18@l)u#=qiwoF25uJ>O;uSVf2<{n9q>W+X$J?_xJGuc)v}DKE@?xADIFD z2)I8oR;Tgh=R>`)sLY2(nHk*op+8@g@u5)(y%e4=P5TryDds@^I?$lM8$kJ%a^d_eDl^b<&g4F~ zn6^g)4ULGangT0yuT{r zV?)j0`HO>o!TpR+jSTb%@Y9U(#_UWQhwjJwS6{1(RJSI!JK zYR}^9d*xq3Ud@a&j-z8?do45Ljd(ck^nB6zfv;vJ86=zg0hIslnQ2B}=3Fulwl^$u zma&C7aC~MPdzl0E$!y~cxAgi*m_L^}+xVW@C$#~GgKsexlJl_N&_gxe%AwmkP$t#^ z^ZA447+skQ37;=9&j>;D`47298hSfhe!g*uInZC2Z#ZYu^#$@X-!KH{r_MKCv_SLUn-&@E(fs$LMMgLD^n-*XW-c}+qvwEA!SUSKzg%LR!1(t)p}&^7 z#5m9FlS;tz!PhbVz(%jXrA7(bR)*dmFExHgcdY{TL*_E$F}g2!Ett$<`z!JM8!w}O1P77Njauj!SYKUvxluo`JUECfH<~dA&es=4)w$yN`ogHo z95`PqjV5S*zE&CZxiu|cbD%3N&>gzJdfg#Fu>x!$;kw!H)Mn=-#PhUL5H0yzViM|36<8oS(YKxGDHnW`R)_erKZf6CZzZz^H=e<@tb-jOOLJ z(8xyf@?2;vMQ_ic<1Y>x>(E8u5OUDif#%~cii{#OAAeC~oI}^QXnT0bxQcELHo>>i zIKRO76^-)?j3;QEUtpA5$oB{57Z^2}lci3l>F;+(je5*J>0_`0ego6<@gK*GHfTQn zbEAyn$co9245-m^9z^%~HuiA)f)+u8cdL~!}k6{j+ zuhT{jx6}a2Z@F2gjRly#4Y(S3ImUT;JY%dy^YVDc$Vc0l}^YMol4Ii41KfGw9qxpE1 zOU7qtK3?ULu@cS4qg*yNqxpE0%SHiuNIQDHeQz8_M}bZ7X*3@na>cle=Ho-I7&p;; ze#lkhXEdK5a@F`BnwOtz23aDOpKFH69H_sp8(o&tc;NcJZhXWXxW2C&qcF~|?_%RC zG{3%Y8rzuz*Y}Uc;XGD;$o(&Er2eeiMyJoYPr&uRFY_m31bWX_cpucPpN&?_X*`F# z|2n)+Z`L2idS)Nl4)N}@9vWwu1NFlb;~8_ZG#|!eM3EO`l4r?*z+cTjm3H-d|A6F3di1&koPGW@+Xv=43L;L6|EgI{&8O(=EPXTc)OsFwL;5ON&CQGr+|@1Uzh<>GrH$O* zRe<+@X0o4D(4gYR``wKMN;=I)pZ&zG}0nekh=EjVr?vbvhZ=rb?d$keR&&4Kwm zJ_MGZmGyz?*vh?lpp7ic>TO1&>3d$bWc4+lqEoxu$hTSj%=m3QeP@UlW%W0Aa^wBl z0P`$!Dvn1QU|vD<_IH4J3(dzH4K(ke`FNv&=AURjUTKi|FWOgwKCd5Sy1t>?5A?r2 zGRvcR`5tV(${c8~hMEojpFiT3_;~H1<|k-Ao_nY{1x@D{oy;0)CNKxa%MUZt(Y!qx zX3j_R_GY-b63yG2;pP@JA0IiwEI{+|kt59Sm|?zS8`@rcY+gX~_UL2t2Q+VwJ~8j1 zd3*GU`8S%6pB!nrx6|X3D)I4?Bh4T*Z?8s~wa~o18f7*?^YN3Pn(feh{N$%*cQhXl zKiV9K=HuZ)Iw*Cb33UjhF2IF@zzGa||z{h9Ia^Ldv{{&nPT$#B< z=IvpE`6@GS->N~p2{)OXMV}W=H9Mi3!t>tOvZt9Lg7eG!%n{6i_BzQt#hgs453-R) z*-2*hPJVsz_P}pe*+pGMczfqJ8#4#aSBlw%*++t*{a&9m-Bfqe^zi%;+~$=uvmx_= zGQ7T@Vcud6oZp#d+8&zTM^3^1-U-eyrM-On{Cv+cgPBWYsU6dj3`akM<8eQD zr8)KhkJo_qs#?9(W-Qj`)k#?VobA}H`B1{9DYRX~65yzjek z_&mS+@AJH~yEC(MyR);iyL(-0c2GPM+K=_<_pV#)S(yF@*SeiDZjZP9;Q9(}*VhlO zT|r)#@Pq4MkSmt#cU9j-^+DqU2VHg9G(K?96~?CVfkUpgY^v`=uC8pV@58Q_*i_$# zT|?Pa-#@#?v8ld)c15#keBg*HmQCXWM_li*>H7Vs%g?6k_oJ@W=r|$YF0?%N# zd&40nC7yQq&^~8Z@J#SRj?3|dgv8%nNgS8s3x040$Ep7QaOJb9{{C>SX4Ck=8P_^C z_1Dh0O4!t2JL_t&m)Z;U*Uq{gWmA9aoa+fT^|#Ksda|iM^{49=$@g-7_W9+it1a3dKfLam$)@YUzg_WYpSS?eE1qg{({<|yxx7zI zf%fpx+}o~BKa#(F!Xfe#|8X5>x9TMAP;Tv~xDLmUj}ogX1qY<<_XXBc)}ehO8_q9V z6YD4u2Pu8>I2cb&)D_nuUVnFZ-Z=3-rSV~M9$a7ENPI|%U{8hPRW*MTCG%&Bhi`%T z#{L${X|!L=ErR}lzqQi%2*n$$gZrWWw#qto>Bn$C)ZbBQaFpWHqv88${!U5<_Golx zr3>0V|8-HS{UX!*#V6BXd@jC=(ui$FNq1GAW?z~r-A#F&%-3Vxm2qhM_}N{F4)VH$ z?#f)Uvlq6vp2|Y@Kx}V4l>qxT)NfRLFC~{<7s@xRX)ontw)~E4l<2K|$<6}1z}v}u z{CZwFfTsTR&FJTq3!I+rclJ@Pv*~>;eH6#9vizl@w<+(Ryr8()U%1H)*~>=4^Mn2u zlxVbHG=cN&I{hVO9oil*?yGEO)A6yd@-17wpQD%mWo0*8zMtbI@By}be{fi6Kjk!A zzCYLy{gjJr%71_52AlHVUvVD`&VPjRFq`rpp|oXF{v(uWXrFlFxO|_^t4igc|qGB zpln3L`$u7Wuh$-=g#Ayh-(KG!rR9Iz32pDsK}uhADX(v^@;ds2;~cb?lBGkHiL^ZC zXM}&4GMz2+GZs9DP4zikna`&B9Ihm?3$Z`)hLXl!i~W%|lmfKfUfxuUlT`my-)|}% z*;L*)mABDU-uJ{vWf9sg??|PP?0gW8k5Lf+h}{D00-M5qqOTgQS4%2>3WzX{3=iaTa}CEwpRNr^}M#7H>)-4`=i*^ajB=WXQ} z*(u*Q6D8hOPO;_tW?bM4?BnqKQeEvY!XLz>U~vUzYKAl;-Su{bc+dr7fH4Yr4{jP4zWhd5%3LR^~5CdBIK(c7b1I z)BcE7UT4$(h*n0kslI0@lh{<>Gn8nwUEed6T(n)^GnIl$S$?0$h3!rD$0(Q3cKyy# znxCTjq5RKL9%EDf=O~@nwEbA68=JNttGs}=x9?L%qV4Vblw}m>|7V<%i}s0G4tPJG zf1dIa+RjgcQbES|YsLE$l(TI4|6B;Z!Y;=4IbXTWUXSf_zEb^kaCsIeb=g#&1&YZ& z*+d?1-&2~gFM{EH&dM`vD(^z27n{nvQ0d1`NSFI_kur##1a^T(pzZotti+)0`dF-3 zztjFW8-V_%f2k6~UI69u`~6DeKPdhVI$6m>+x3&G?D>ytoT2hkc~X^nY${KxVzE=9 z{}Cn9l!ok&!7gx9HuYCmD6QGlUtOU*!Tu7?w<8y%D_z;&fhT~UXaDARh%A4GGK5XX z*9>JOn~tv;O5L-RUpl^KDsDC%Uo(}4XuH0$ls@OEKE@Y8f6SkwH2zZ>=0C2N<2OZ0 zcQW@!ik0DLyZ>0MB%)!w66Rlog%&IM?6<&%C|0(yDZlS4-?1sb?<@P*l;01OLu|_L z2g(U{#SXdt50yXJe}N70p>m5&?=N4iR69@Qr}vkyR$8I$@_wX@L)+)GPn79wI$o|- zV$nX)8qS|3OFvaA*mV3{r?k9)>*xN^=SnX!m;ZC+Wj2-nb7c^l%D-NDlTGDcuZ(9? z`8Oz2*;M`wN(|c0|3>9&w4MJil-+E~|7PU?+CJWIQEFeL{VV$e?}@ESf3)4+w<=S~ z&iC$<|JSX`yX;i30qNt>_V%|a>(F$*Elc=HIZWxfKE75?@bc6izE*x`Q+<4`Tw+sw ze53r$ruz6ssdh=`*WO;K(hhxs&u3*yXS7|u@01B_Dqp!W6K$8TT$xMe{ZpnRavt7wxQ+~E91!y}zJCvW$c7Ap#zoPB@>{jah62bIxm%FjV%GMn;qNQq`sehw+|XgfcLl}=ZJ^K(QQ zh_>_dt1^@9Tn7F3DDkT@mz@iCffuoBEs^nKN`UX(XH)rpSGuz4c=CtRn@z`)Ka>cx zo&Ph+X*7(#Lx1d3|2d`h4Y_@v_zuQ{xA`wAN7=u?`C+I3n$q@fihn%PA@=)kDn7Jb zf47uR$^3u2rF_Ar|JyC)8#d+twz88=`M<5~XH)+FQI4`H|Nkhb(RTj-RUWu0^JD)X z9cmcb{y$bxhp_4RP*sga+xe}kE+TV#tEvXr)ZVJ9ne4OJ-m0ku?7y+SRZ~A=Q+Yzv z&)HO-5Oph?%2Qn}V^evmtNYM)d1|P;ZprfaMYYFZJi{NVK6hK%&TlPs0NE+W17ELQ zOC8RZWim#*2Wy|kn3~O3PU5vK#Q&%lT z!+a08{yXD$sn$P~zkV=i#(P;a8q^s|t?fkmcTuRUV2e-PG;{1MBx4MZ<_2pK- zW*5cE{*=@OreJ-!QcdZRfYCdXP=^(Of-_w(BEYjd95G()m0z z=~1-=?HB77!}}C#v{3&=Cpc;QE!EmpWO{hNJ#N3HS|4q1zm>WVZEwGgT7kCL-&TFN zDlX6cg?8$rWM}dexxd?~o!BeE@Vv6xpH21GULDM)`fIO_MBCf%pe{w*+kafmMF+$> zc(1ma^rYIen%q9^zXy^!s}s=n{(D-DC3AV7R+q4;yico{XnT8I)XiwSKD(;*LxSt` zS#>zt&QCWro=y9sySfBzZ@-7S8f~w?hx+3^%lA?%(3JnMr03Ot?^(W&TBADcAKG7i zRGm%v@1s7%ruu$CZEeS~zF$y#vZ=mbRQs~2zF$;_pzZvs{nZ!H zcKIUI;b?pL2=z_0z5J_c^*o!l_l9~MZEx>QwMMAi zo_+ossn$bNdkhO5rG}yH`X8mXB=h!1sU6s~{ZVQcHf{ecwI`dl|CahP+V6BidHQIh z)zN5syl%8QolWC)qtyj$8m}9zmecY=$K}VWb!uXJ<^3~OHOQR5vFiP7%HLS^5jN#- zoZ5m-`5UKpAoKdhtKHD{{vNLmN89xmsV?E=X@5*qm$PYm6V+@sZEupgicQ;_q<(_7 z%RgByXH$76tCuM~=Vyv~>z?=&wN@?Ke>A>2O}!6o@2}}<3o`eormOAQ)SsHJKFtof zAkPm`Y7e#vhVd`8FPqLU(dqy;onNBWH`w%lpP`Or)Bk;jItA?$lP|&hj*@1o$!NR& z-c?UhdM@8A^*W{J`%AObCbfh2?<{o&na}^TR3Dr2GfT~2%ja;zLT9V_Z226nA!e&v z*wjCsqkhY#{_!037xuqRV$kd&xC%MQT)elsbcMzWti5BD>YmaDhWrH<%#;CtCgE7Zj< zxqPW(&nW2(HJ2@5yn0Sjmb!-B9-haUla!-&Q7C=AMCm*=f<0@wbiO)g?PSR?%fc@DRnf_ySBYSQ~={4#YO{VvY)^EZ0 znv*_NH=~oq8p!WDeVsZ|$2j*_KUZhCrS1RY=juu_e;?~}^#k^tSlNI6T>Xqq@8?>t ze#xfybFEiP(f0n?pms9l`r-W-Z^-k-CN&vN_v;Puh59j?wx5^urTQz``R6=&zS^Qz zvO{3J-Vj^V^X#a%g!nXRt9p%1|NpJ(zij%yZB?BXmXG_V+f)~u{{P$5`e-}9C2D`P zeZKix9fG#|Ki{Z}DZN9^pD9ZyRac?y{C}&iLC5p_?eEl$v^>90_B*wdKe39$obK5MXNf!a(!`v=0opP zTe0Q*>{Cs4st|-rujX$)!S^E-*a27 z{t)Gd<{$l|)@9TDqkmKro#3SRkN>MSVAK1@|5cl?X}-14TCr)qwa^}C(|l@&_6(cm zQ#-WYX#4(F6>S1K4!@sqVSW|u9X8ExucF1G?e<(%8}P8qzfZ(+|}k5D{pkVCW&)YP0|o-exu>T1=RO55}KR4omi;OzLGJYJ|; zF1tI}1zwG|^P_3E(DwPl(4K5Y>yLo+eFAQ+FWUaUo7w=fb40W}znR)__GGXjOl>Ti z=5tuu+iaT8VQDkb_VztmBHG^meOfu%C+013i2i~4THEF_Klb+PYn{;c|GB`Uhlq#s+dx>p1Z{8c0c|hZUSC7)5Xb3!(NOF5s9fGo-%#t1w$neP4gQZO zlAT?l{}?46(x$T`z%K9{c0KH`Hqz#^AHn`=BQ24AG$5~^8*6Fo3a|@YfVT7Vu=Y_4 znLoR}!n8wZJKjXAMBDjoru}(OyqR_rO~>=(kZ`R^%i#JA*J`5e^@VE|+K=-S`e-e* z#%O!{EwtwMEZTTWU|TX+BU(ts9%#M=Pxlo7zV!Z2((7#~u~mTAPNp_jhY8 z7wr>!mN>-7Kx?g><8=OSqd8jzm#3}fB0C$klKZEvX0cm<;eCACgX}z*Zxkz-(~I-T9r1z`@fTBpzZzrl-8c?>(W3w(}E&+B&AuCVEO-R{~yYlz zdfr|??K@t6DfZ9$X?xk3*gxy19b(UEEdSsAwd3qXVE7)r_B)%d?<2H}Z0g@fXn&*a z{Jf$))Rx)@5lcth*XruhMHXc26> z{&`ay!lvt=H?>i0s-F?s1UA*r2yHsLR8W3LYO!o;-=nn6X!sr@%$F!xI!3!l%Zr}i z`GIj-t@iYPqVb(b%|P4rH&JUsc77`NZ~R2975hu@u%;8W$I*8EP144&DL+%R@sytH zZ>lzxm#6hj)!t>(`lf2}ygcQ9n)Vr+))%F%r}VtOXl*Mm|Lj)To};xg_DkRp5v}cI zcZUCO+2R@6K|2n1Dl@d>>@4_yM2VT&Y4%587x*GOrUIU447{t|V5fkS!PPoYd!+ov zXrHhtzjL(pXuCdRwKB3Z1IJrqwLR?j!7%=#9c0I*$p4E^JH}oJc7ac`f7&J6+g$Ae z`!_I*|7bVZPviA>oaX3A?K1*wh&Zh#o93g$Ybu-Oqr_|Xu|H`iw?9v7#NG;afy3FW zFn<_^3y-lqIZMR3i*7eEY?I&x!(DwdVt_>kO>3F$Z z8_A~Q<#KH@FHie7Mcd7$@~qJIQ+m#Cx^|S8m(Sxx#iwf(YZq3!bIYkSDf2NUG^IA1%! zZVnC+`PwnIEbr@!3$#;gS>DeB1=k_G|0We(^5cUp^E#pp~QT{2kWzk)2UX<@x5Yc8DDh4iSg73bbASKWlTI z4Q>xdv}I)Hdf0wc{1GjcT>>7~^oW*=wvV4jwGuY>+Op;T=rZ?& z29*!L(h%A|C$*ltkyx`O*3=d`12+TNeqX|%n)^V$V;g7anUFQ3=0vxi}S`Ml>?l`0|l;^&fyMFXZ*&eRi=|c`r zljXm5$06{%PRY_6cTDfoxOvw&UU=({>HQYB@0iAK|IvnH{!+xdFh8^+@Q+r`z7!Ad za}NmpINC3ME`#qO1RQ#o?y^2o#1`mp+zwRLD|*~*Pt}sE>F3B|X{8)54$*J2W5A^m zA-c1tOz#t;&%ykgA$`K-w%(jrRS2J{TIP_dQ?6A7xpU1O-7Y^`fq5TbDPYasHgwQ@n-4r{emw2D#v?) zKM%O{e>wiYF+%K$QuG?nWB#2N!H*^@x(l5kJaGS@ZL+F&WXH^h@0lcP`dRiBnBV_o zvZ;^kL-}2?9bT{Tz$?*iRAsXl%Io<-c_xj?7dKZpA3;sONQ165Gi#=oE z{#WvY`cZcI3V7RIawC1ri!y(HF)$0BZ%uw!U%>t?0Q0evAJM--+sCIS`c8B}w1eY$ zqt;FI{pb`?vjKb`D!GY1{3R?e?%(gDo9nS;kpkma6-&bP{p?xbMaeDoA$_U-#)dt^2{gLhTzUTxY-!EAL@u9SQsGPsM3p}1J?>DbYXs`Roj@ge& zchpna^*71yuRo#hWYhcCpVV)lPlR5|mdBeX^;={|jTar_$K)sVn*C&XPB}SaXhe#?nl%9xt08ko=(Q{R9)Ux|B9E7g7Sre z_pqt_UG*bD%ZG@ry0bs+4-brobk?8M_oID6f$JzTj0f?r(j0 z54|AB4VU-StG_1WKK>p{FTDeMGaL_FE$^idLnk;7!gy;Z@MLtH^Bh1CWqVq*yq{jm zmhDM;7ux5Xd=}ax*fo&yf9ec50&Ta?etHypO^)2Z{q&h+Y#-;^_0yLHIemGAUdX2Q z@ru5S{XMjY!sV~%Z3oHiRbqRtp}ng2VK=%i#G2)==_PF0UbieCs2@Sw??WA^U*))L zk2SP`x@$14Pr7jVAU&2X_uu@$VErf>#>?USGe0m?&mBVbc?J64yOs~rYY!!xE1|!# ze7Iiib?JbZx)ADf`J4L7=o5|?TFCdaj?xFB?eX$a`Yg21DZiWjS=CW`BHFIMQTk3c z)!!(6ADY^;chD$(!7$3d{J%AIjM0y!)fjyY z8ty+}ea_b3;kaziv+K{+=dxvc&T2hdU&f~6>1;idP4zun&n07folteQemcl=2gT~0 zMpFG!ef#uSwyf{9t$q4Zwmkmc=a{Q!vSod5Z5^ktMkk2tM}){unWuLfMeC#elb|OC zd2Q?Y`cXC=Ul!5hifj>8>4+f8}AUWv|Fgh zu&aXK0k;}0)7$NHk=_#>aLVtK_t6&VeaWH$ydO(Cmi;XpZ`bLI^v&oL@kmXF*qpLh zKg50({7uRdz1tYM{uFWcD!jioWvSkBEO{%OU%yH5>z&Xi909ohT&+ry9*?H^DLOF%HYe{iRgB9@@@-s$L%*5X;8H`z_k1>ciO~&EWmxDQWs1bc%St zsSuvjO#J}+Nr-z=v-IO^nckC{t#=wv`IUYsHAnvio#3nv{f#J*r=KQcejZEB(?>?i z^nTF~=D&1KEzlRRkHUPF-l?nfFVP9`?oT*A#uw|QXrEXd3*+NUi}lzEa(SQl$tTC> zKhO`O?fDHK>J{iXajhCWpS5(g9x+j-4+sOc*Dv*BeHz-29-R7#o*NV&nYu=IPon(w z_Q3ZJQa{z3vZJv#yH4-I_CopA>7VPn$$YyF8CeF@G3;MN`1 z>$TZKTf+BXJ8aOqu_vH6>NCi^|2F9fL2lh)lb(yVzyJG%zJ}tWONl(+exY}H8@Gps z`7nAed)9aGJ;Rw_>Su#&h|T)QDKfoJ{80wqFHhZ~FP=)4>zk8Wq7Ruy-W&$+r%3%u zU(Nmm@;kJ{H~Lw0K&dtp$`V=u~D10wnFW0-V!(luzU*E15q3!m#Q!hma z#6g(v)L!4ISDP-E_ly4EC%n7$Cg^}j0xwP7qt8S8xPHFZbI}RT*$=_||ETZvVsvFF zU0;2#uOU0=`ssUp8=J1Te$+3Z10s8{L!_qe*NrH-{YnR2fBmFeXgj|L^u}nPljhqT z&|gB+@j5&8fIf%J`8ljFK->8_tgj*S`VZ^3*p$DY^={F$eahcay%_BiBSPf-nqTy@ zY6h8^d(Ed)|I%->{cYg+hSV#1?HIZK6!9V4uUcCB zx?Z1M1lLD5Q~%aCvNJ;Ac$FrMU)afTy=J62j8kZMUlq&;`omS#xJ<_V?GjZDbCz5` z)pvumYR0Q*`~OhgSd6y!S9N1`Q2G#29i~LyT|PwAFd~8sBk;xtXc`~5zoXOGPjPV$ z?nkw+SIaQw$mMM2I&Tn?H7rhK9b@h2j)Mv zf#vsc+zb8PE@`^4d9GZaUvwD<=esnIF(!^&v;eNh(i#{A?1|v`w8lo?c#0o}{=|~B zhmCA>g7X0w|9GHwn6V1&bB2SH)545TI4+;J2@7pv9AL}mZ4A-GxX9`2!}URWT2rIp zJh^_K^RM58C<4ERruys|*VK3meZukNSO>g6shJT;aq$Y2=cBadMzsXFe1dqU7>+k- z;l=>=50HLKT1%t;e9Hgt;Ig#V#v1mz2#460_L$*ZK=JW#d^w!f&e+Hv4A&FK(%Kt+ z-lO;tc)$ATv<}8)_ON7`{&Az*LW=)W*C8&aJz=;OO9w<%Sf6vn6Gmc?)fJtM%S$N! z2-N=rE4mt|my#?0hWc9ZoNedolD^Q&&th_M-#hSIqBZqe}{lig;c^gN?6`;cEc!Dwx#hxrhP)8-qU+4aWA{4Fq^Xa9uxea{%cKEF(+ zUucYCZz~j{PWmDvD#%9qVq-;+A4p$fe8K+eIkuNR_QdXjOAJ>rHCdpji?)iPyy;d~7Dm%>7q8@1U>z=l|EJj8Aa{oSz86r&mY z39unjj4o`tpOUJ{Xs7 z976lVL9j!l8zZx1{^5Q0{o#3y^mJn}IzfyY4dab!y74D_QU`~))+y5n%f|9@eXXgZ$^0Cz{*=Z9xO{=Ji+u&=!wpMcWt>IZ z^NEX%upC+56QN@;KgC9KHm$$dXo0rhKU8eAXUp?JyeKw0ld-;zRVy}Lq2(R4{SS?3 zHf{eSqe-sZp1u7~jHzfl|DPD|vZ=m4G2+m4{@7aW6C)7hG1b-@o6#qDd+Q8W9+t;J z+gop}LBsrnkud-Lsf|XPl``%VAH(?3Qg9cvou5s{1hhRqvB{W;KH=yHUiO~!j{ zy8hf`q@fd>GoikJh}vZ2vIm0aJhjOvM%(4vWUQe$)>mx$CSxBuMQjYf*EP~N8qmobv!p)cga`<|!nHX_lK|DyEWMh?fHnho!BPXFF0Vpll@ z$Cnx38=u^>{P)HNHhu5&d*ciAiO`FO;rlkQ{BCwD=>L?Y|6rV8PoFFAC+s)=Vo$^I zy#0o=SmytPqbrO*wOqL0h+wya`{NGrlkpZi4#q>u(|`pr1YruzEL_?u1jRcVBNK=n=ab=q*VslHAdjo4IQr;XNZs;}RT z9&DKyp7?pg9~8fme%>g$Cw|db!>0Pb zXdGed&|bffzGzegE#GG5CF8GqmjBDRc~AT=qvnUSKWYD6HdHk2@3dt`}*mcu@s#mrosKkf77oSh3t#a{+$_r8*A9vaQ~@Z#!Vx0wcLJ+ zIG7;)uMzoC72yOw3H`A?T2*(Kk7eAC_GDCb$DmV0d$|5$xYf8-d||pgWo^=gWkJy4{I#?u_cuqSwUT5}o8(&g>hIyqU+)uF2!2h#u<^cB#Xl`HNab#x^ zj2{;*8tk6J7O?)X%)#!N?Bl-*(FQ!1eF5ANyogQjFCXF#pnXpIp2rY(CdWhnfbZL8 z4s{oxxTnbzeXSM2FLG{}$qXHdFq6Fy7ohbGZ9Ddm@}4CuF|m-n@n4_4f-g zH#5@h+Dd)_;>$88yXTar$>*{p<8Z_eOL;%!c;<>{7qGg5%BM z`s_?*vb$TUTz^2k_BG6>$V_!l`Iff#7^II(O?PLY17he@xPA-IbQiGq!+1iS@GSR7 zL7vwo+x<(Ble*-%>y**@W%`^hx$gSxXgFW5)AQUNzoYHR_|43f?lkr}_`luEEN~x3 z2ZW3}vR1i=Y?tX%#3wMHq;}T(?(yt$u#vUeJ&XM}j6XHZTI*hnhVgy)|E<$Mb9dQ+ z+vECL=gvh3#FnZ;G|5`$E=MOgtGp`jhpu<;WBd2X`v>dYhsb<=wcdRS9p}t0fbYp> zt#_Yie-3U3z8;j`5F6YLcgpRTif`t_{o<^R?#*bQNC3yp*yM&F{K`T)X2Sl;`r?jT zH5EedT5`uUU*@YjzR*O*@46nQ|N2h+Nm&0YS>L!%~?=6;gnWpMt?sPdir zS&knBhluaoeJIY)bC$a!*s^?aGs@jV+4TM0?d~z`g(G2pN7fGaMzsC^+~fWZUFv8F z=MRV2eZf7!1?)l??|y0iaraU7CiDrnzK_})mG6J{z`Y` z4`iyJQ|=OUyl8;+ciLU;M;VV7kVB1IV&Ok zJZAni_d<39@I-KcZ7zoAv$L+dGuTbRF*B~a3((&>?uYVh%(~&W4$AWR#ncUO{gZXu z9m!7oQ;2<8|GG=rvEUFrP)P|GnyFGRJ9uIL+%E ze+vHpzOJFB^JlrdPaKE+*JDUcvw)ofuFR@s?qYui$BzqHb+oK5BTnzz_g{`<^6zfyWC|NUkpo66t7eDzpx z`5T&%X!`%w%x-9=p%d_Z0%4&KnYrv=p#H<_K4cc7o(s0XS169(CvTAbhzUDS?!S;7 zxk5bd4!h$*IR3#G!Leb-xd!u1Wf%5hmA_VKovsh~@7{KN(8tB;Ns zgAT#=vYVUnC#Zg3LqBTnV|QI5x8KqX|DTK}i_Xx$cqY50naLKha6hS0YqQ!(8Mo{E zF|#W=!8ro%2lmcxXZA+>oYTO4!4YIJ5994kSA|@@l#kc#&2V(Qkl)#SExUu+2OSXS z!LMg`GzXyJ{{DONe*WX8{+nE$+I!9HC(H@xGJfAcCo`5!_1VcxVpIKfGIQ8ef1S+L zY}y~4%x0Bx{r36cX|p}rzMuTG*$qwGAC>*IxtZc3sinN%-PP=PN-pmcp)fvwfB$Y~ z0=hEvDqQb{g+6B{vi0xec=mHrl+ zuO4Pkj;~t@_Z#ASnteH50-l`R(;Ue0M)-g4Wxm1jaQwgbG9x+umF!<-_cjaIhtbcQ zN6C)%PM8mr-N%gno$@ybJTLnNbHN|dm5$#aJ$#SaOh)@e)z{#Ax7mHoqZ}Uu@xrKn zX5TZE{xTS@ILv)$pO}v8?{B)!QhY1?{{q<&=5@9o{%=LuubScKC@%NkXW6fr_5URI zz~u*+tI_cNB=DB(foARV6sPmg5c4Ipy?=+;|F=3*=E?E8yMAfKy^iT7`=58?4-LK7 zPvpq{=-v2hU&`a_T{ndG5gZ>1_frD#cjLFAy#&YKX>;%TY5(6%Py73>Y5(3e?a#ZW z{W;VwZwT$r*YBA2->^HT{WbiKX@9+O$FzU$n)c6#J8{}SBk!2@&nVk<=>PE69n=5e zjzj4GFxrlX{P+tTHM2*XLva7u|NpV(A#@oYUmtgmH-}u1``bPqOf&~vB-8O=qB)37 z$AgLH7&aXbCYk}X-99FoIcR%(6V3NIJsqDXn;)`i{gcg)*tGu1<|a0+f3o>Cn~pb= z%~G_zy{YCtw7tEl=Fxl7zhid16kMKY^9eTPC)(`9rtL?Y)7Z5AX!8TKy}f92J=)%0 zw0WA-Q~qX}-Tw;S-Yjzfo3=O09M7ih%`&6ew7pqoKHA>iEPH>}`Kdr&pWJn9j66Qx zb;=GQuFbgXnhWoZFNE`9MwL79kV_rletq^G*J=MY%txPk*WJ;x?`%IITtIxz9jBsW z@AwAh&v(bWFn@O)j`_Lk`Gsmz$f$<#aVsvFF?caIk8nn-O3hL8<Ugo&Jne5-bXWpi`gWAhN zv)UC|p2|?FpM_>yHr3A}b0nME%VIN`P3>igS&H^K8$$mmV(L=!7W+x`GPCVfxqhE$ zwH4-vWG9*f(3PRI|NLewoA#gIEM`-C@SFSC)E@libvCsJzuEB`<)7NC-+Ycu?bUDg zV^e$eo5R@DUj1eyo7$`2oI!R_d-aQE{iT?f(SA`A=Ku83QqAz|)c$hjl6SEm+(T}7 zgW^9y`QdPW%@Ms32e`)=5==d28uVmN$J04 zw_+!N<@z5(r-)rY!Tk_ee<$|q56ow zIhlPs44${h$ueiL-~K_yv(1HQKa35_?d6zh>>pt~*OilJUMBPS+DcR0lKH3l-!^@v z=?Ze$^n7z9+4ZxF3^KWEQa}O_we< z*9W;(&im%iLGGCIp;_fN=10i%&*Xe;whZ#~IiH$u1o_pR4Q5P`hvjTC^V$0Q@V>X4 z&1N}!{!DG?x8~6x z=jUuUjeq6(d_q1?wk&72*%F;1I>Y|_FlV3HkuCT4hMXVF=h$+8Z^-%4?8lb-dqd8C za~NCh?+rOWnUQR{zc=I@FlVsk{@##t&`dxlIOESj|9I{pb16FsyaJqxj&suZ|6wzS z{oo&Pe>&%|S&S|f3*rCrUCz(uQCgnIPmh=tXu7_0h$H4-6nEzRF7GECF>kV0gG+Lb znAHRf)WZ0_0pr8pvx&8|CQ+6Y;Au7zxXnXy?nb#@K>#sD0L)H(Ke_u|e*${1~KV`l|ap$j?|I_Ac zY|8&>b2yvw_q#d9PM;>nJAXH)q3!kkVXmb(Z~u(B=|BF8m#6ZaF}Jg+JZH=w*tET~ z=Fe=ZkF#b4+TPwdvtbo1pR;CLdA;~fg@0N?*Jm$J`*;roAP8oLO_FQdd2vxL13>;j)+55e+XHP5qSuzXj| z>u9^au9>H+$?e1ZU^spp%eiju4aS-6^-WHLR8_Z;DgCkE(ZWJ?kB|d>>U`@GNwKv+sBzUdwe^^VlQ6 zL%~bga=yyQT*XRZ&x7YL-Uer*<3#O&Fx~-P#c}!l=y>qQ>=w{p_Jh~612ErM#<#M+ zdl2Ra!{?KBvJZp5U!qt)v+4N&)jGvq)CisjTdG=D*>6GmZcR0-YHi%V&RB4Eu4bw1 z%xC5E;kwm;y&hZ(+=Bf{dl+xYHLUjR{_sAEPr;qhan4$hz69Kz;^F}8-@4$4AeZI3 ztqbgB5Z{w)Swrf`{P@JoaF`D)JeISrv|m(0ef^Z{wR)lx`1$Pm)--m%WO#lsx4xCj z>H8JP{r7-%932q7UV{7k;Oq5heFxxr=~Qk5tJFpQ0(?F9A*-W8t`FBAV`@BXtw#sM zoR?v~N!}w?3CBl1?GProizd_iL>AmHfPc6(RhPE^KVjCp=*rLzec<{hFU*Pyia!MY zjN%R#^smD6np!1jc;6|eZ)){1X#F`q!u@)PS96muKM(Wk^O{-ZXnXz5t$k?Pe#gA# zR((^ZujKW&u)@*y`de7X+54b>^juyGtFJ}tKMULIlh?}HjHds`ch9x4D$tdVIbGrV zhIwtRJ|0>>)qe+T2s%MXzuMz*YajdeG9kR8lU378>FN2r&X&c#1pSL)d7Z6Xv`RZ*V|e~7Trh4{nf|HW4jl@cxGN7Yd^Y7$n{6(y@m{=25~_qXG9 z=zWy0+%dh6@~-K9ny=o8)Az;hn%<}R+MPJPPxG!TTL}1n4zS}P(+@x^%)9H^=z(|Q z(KX_2j8)L{xUi5u6x3Kko>z2`CoH*-%yYrYb(T+^r80hA-#J$-~sDl zw(C%PA8tE@+V@?{{hL?&uI2t+6ZYnv^t3-m-ZAa(QC6o1n)U!$#FLEe}*+IolV z`~lkU>Zmc+EcP+*r{Dzkx6pp0#8_)7`w-X#PG$FwknwR=4*PX5d=JtpW|zb9Xj|TR zYYp1xl<)W44&KD^)l1>}U~Z)K75fYD#=J;t2U*De`_8u~ScloN|Gx9>N!Dq$?7#1P z`)%tQ`==7=saEv{Sbibpaq$1>3N{h27M6~`CA_`rebQC1q-hu05Brbb!S8p`GE z@v@nB>USs1-`t;f$8~7_-fTNwhvu{1HO&{i>;I;w`I`TK{J-h{>;JBw<|F=heRJ;Q zkCwk{n!hy18iVCc!Ryy!d2_74sQkiP3+{*J#ailvSf9=axITjShgtQ}bp7BJbFHap zd%kr%Z?Ck@gvm0!?Xr;9;rwxb|9I)-40`}9k! z&1^UHH`{~1WpBXzFSRbBk^h)wH}ts$B9|d@_iSHR(*7W*aGv_S}shoVuBpD zFkqc!Z+cJWXSwBk1h+4wBWI*o$?SG8U+m?Tsn(t#4_%pI{SoBxD|0Mw7%eZ;hpjBI z8nd^-@nPYVLTgBnXRa)^qJund<%ia0_9Qqzd&MW#UqSA*a;;Un39Vno{VPAS2C!E^ ze$!X3w+h(B;QRY;uo9cf^kt5z(BCm;Y_tOCcp={}@_qD1YaKd4VWfBeqnWNPTQm7{}!uZIGK+BTdiAY`+e!#tmH>!JWeR^JQ*CptdT9qk#K)_?aFP| zarO-8FUxqfRuu0J=M(9(?B;O1>tlBUzs($oirW)Pp&Mprjwnc zPs#c#w`Q~ZuoKWQe=Gr>k6Kx76|*0O`oFSrhh?>w>q`;KKN8}fmAkAp?5b;|_gbzF z6h8^Bk^h6Wm^~pMuFvv+vNogP`L$Fz|L&kwiKhJBj6P&tN0&M1{CU`F*-@^q%t7bR zBUW3qPt1q&=f`=!Sc&Ytkbf)xn3edrOz#t`Vf^~zy#HB8+0{=A(Kx@tDt$u6;rmap zzgp*?vW}yDq5z&B>XiS775^l~EADfMUip7oU!f}^RwLGTm|gxg{GanJ z&t~@Xu)ah29#4~(DZOJ3+z-k3dh~wej*A`QO#TC&w(K|I|8Ob4f#(q05B;;h^B?r+ z5tQB!*Ows$jXlTN?}NiuhIwLMp?E%)r-`R@0Qq<5pLbo^)N_bk260zGGtYv76mP1+ z`;rPC^=uwQ?hePB_64mxX9x58;Qn&&g0`L^L&zUN`T7@h@Wc+~^zXp?nF^ltba|cp zFO+voL1)itwh8g61G`IN`$b(S z|N4U0Jp0i;aR$7tV1TE11TFtP?EjqwgFO03@&@n^1w%dE*henF`z#8EdlsSnc>KxN z-|*zJ4?}&AsWHOyGdok(PmPhD>Z54;f6o`gSkI84^f#l&dM2aG1RamYd1kWdcogYLM%(jeCVFbWCG!&}F4czl zfL$kfs*R!Y#v8)B9xn$7)BPb@nX`%AMu3(#>Q0{S!c zSI+kAV{Zi4DV*&IA5Z0#{h#vm*`8_W1g9Lo3Co=0iDB2=C+mBTC!Vc?UEn3`Zu{l+ zN33T#`&IC#;B5A{*x&SdK4c#O8^Y(=%-;DtyiclduE!OL_2YbaiUY>S=XxymQ{a-E zxt<5vG#(%4Y09SY_&84+vbgUjx&3(0V0L;RhiFhZ&odnzCwjs0rfK1P&ph_pCGfth z!Udk?oW3@6R|vk`pb!) zx@dd+!tb#tj{W5)3jLn(6zB1aB+mj~UT&{TVUnj5ZC}qU_k16;{0oK4JeZ? zs#9tE^7=Tv@Doo{wEcft>uHUq^Q|G)db&`Y-?#s%r{_KCKlSwej|Xu2CW&&q_EXRB zp!l%7Pd)R3{6*n9&xdF@p1lLJ>FFe{bng0Z5MV$PhU4etkrluRfi#H45eKD)bJ*Uui``_+4kEZ$e&#c<+xk~Ast8T;l z55Tpf<@)@hgnfC2bU>snm(SC0_cWO)UFo3f^BtaKv|s!Q=i4Ex_IRA{((iJ$u={qcB{v>Sxbi>`!2R@yu1fc+41D-|0m%e%$jU z+HP+rJ~!!Ct1fyX*^BBp#ILLV@+@HQ@WT6FR$cMvb7=h^fp4t3=IO+4 z4E=?WqU)Yybb|9j8+ab8=!Rz(yXs@oe|sFUa(ODBOWgEyLYE1upIe^&Y^tAsJXg@) zRH6F$*AwoO%lkw&^k2M1!aHUzd46j+9~D*cia2S%$OE@5s_G3#`@{tJKXoXo=8Z?w z{_88Mdjn)A{oiYNGtepG#5N%gPOIT94sz+cHM|GekCZ@rEpmD<1^LCIQ11ira{DP_ zJ1jq0tL1GTE^g^B+f`seanbtm};qiW{PyHzCNwi(KBdK^`+%^_B#? zNcYyCC-Xzw+gWIO9|`i?MV7Z+kY^Nmy>A9NzUY4MlprrDYUs^HQ~p*IHTLd8r-;$; z|65rU<~6?GZN1ajr=dSnR@B~m zh`kZ|>t#icd;2b=^yP58-CNYjdm3FT==$wxZ{I}}uZr<5-ad=Tt@a9WsOVYmdNf?m z!u`p0dUx+uw0%77;XQz+{cDIG-eW*&?#b*7v|qJ?diQ4DY?lz);#a-H+2dfm?^w}m-WarB%!TXi%A!Hu zY_#3p2YXiq8NN^J{UpdcY7Oyj3Np+{_kI;*1H2>1J8BK{?ho>@g>QKOAUkWq^QeKj zBfOW`4cULA?fM(xg%2)6`Afy-$*}(tMtGk`+wqa!e)q&jdIzEH@{IDniB54&gY};) z8s&|oxM-at*Y_6Gy8M+@3&HsYquHe)w7t>ZjhNn^pE1T;g0}l_W4woGec1nNS~$jg zip=vj#(K}A?fj1Q)?OA|p0VC!v>hMk&A2B%&YO?6%QN2lVUT@Y$9umZJM}g4{U?#$ zQnbCkNN@YZ;O#|vJEQIR1n+bA#3y)PK-=4!=zZm$^b@^9?nytg`N8nK2)Kg10q##UES~Odm?W3C^E<6q4DUKLj7P!p;l(q(uLp2@xIb3Reb+mI?971oDFx=nc;7+W>x=QuN89U*@fHOw ze{A6_?-pKu&`G)c9PhX681`&9|+nYodx5mNywTiR7JJ?T;mhl|#S#~?{{rz*i)pKQj6GXFz<@q?* ztFSjfeMr}5xA_Ie1B!FKP1sL>VFcbAo=4>s;Jw9p-m~oO(7)bWywY1OU&i5m=1`vf z#rfXy|6}i4;C!mO{`WcO_nQmjIz!AkXC8`Bx+p0{SM^Ym%OFBGxr9(WC<-&lh$8a1 z7Ns&~MtCMg;Qi%LA7szKF?GJiaKHLfa6i@jMX9?O-vj5J%4Pp6HTikW58R&s z^3}4JrZ!{z`ZzrdFV21~^)1GS z;raN=>{Y3Q=A-;1RUQ14zX1`a2DgKA4h1wo!507VWPEE>2`^O}78j1V2 zTT)XP4}kUl>DgOS9gU|Z%zWNZPXj)a@e3MnO}$X#y+#47AN`p1Y3j`yzo8JvCvQs~ z!8or!)|c(6Qz^c>1nO&c_V(0VjVEiIpS?5ndmsKs`#q^i3&_8JcVWH0{g*mFFrM&v zf_+7p_CNQfPSo;K6WX4S_ebtaoy9n%0pa}1=@BYRMOV|I#N z*@vCMr`e5scx!fb`%WL;lkM2kefVH@4ST*1AIU!5UdI^EBd^S^Wq;tq1Cr0Qcl&Tb zb{)IWhc{-|waYFf`!K#U_-y+;AKsdMj@`wF_hg@MKjFg%vm4rTefUUrBYOp7JWsJQ z`x5&dA0Ci=sr{)B7i3>%|K!6PvzyqF7s(!s?+m`euIs~Fv#+w-`|zIZX7-~#d@#GY zJ;R5OWM6N;#2C+Gugq>~7x?gi>iBqd`$u1A&hsA z!1jH+{UGBX0M{CPyFG^SXz1MHdPngZ4dC_ z8VmZ_5BPB11^w;GK77%Ffp(4$U%OzCz0`->E*NSTXgo>3k9h5Z2kcq@Li;DFHjlx5 zPYWKh3mIPnxa)$^_J(}o<9hA7vJcxk8UOMF;Hi(;2N-vT{LeODX*ip!^3UKWd-O*m@B0c>5B@ zjiG!8Bu}tgYdlp=+6DFXfyeA=%y(eFI6viadlus+YvC>NvJ>sd%cTEv@PGdWPuR_U z`2Gb?+H)9pKNs~+vy)yS`D1Y2AU|cgU4I$jZ>NF21vBifgn2$b+a9Lzn1p{0((_My z6ytwDea{^-+sdtG^f0dPXDJWA z59?XolJf0Tt&i?A#rUUFdI@x&XTE(F^F{sw#-jgHjdv%$%KDpAd~NS?&^M9zd|&ob z`vr~V`EaTIwoe{*gzfh=mi#TXcl!A27QAd9)p)Af2lLf;7c8@LSD}C8e8j8v+Zv1h zSM4ntlYeiW`>MT{`7}RUX{*&#o-}`3Y1h`6=6Bl`yk@u1cnsH%Rdxr$a95a8dlsy+ z`!YVZ6uzgmV2wSE@i=JDKP^~mr>xQCr|7=RwRSDWHGmH%80?9JxqR2!&-(BM_ph~= zXuO;Kx6WRru{?jQv)}Q_!xts&4>itEm&L<)k-pCUD8MhUcQL=947e?)z^<_t?aNRT zE2I1y_I8b>KE7#x!TfV!XQ3edO?&7%ogcRMEqkQK8EOXTD@cFKo~H3`1MmBU6Pxy+ z0+iov?1cWT1K>=?#9wdU_PU?H-X6f1`0v=Q-|+L_v2SBc{0;W`Z~FNg>?;`)|6RN8 zTYmn#b|Z}?e;e(~HO^30657Af?h@d?XLo0Q&$9SD`<{JYfWOIpfccL@dn}W)$<7M! zKd>hS_#fC$2l$)q7nq+0`kOZ1Y_ACLx7Y;%{ucZF0Dr6f3G?58_-{VF)jky9e_|hF z{-uz=H=q8*uJktgL-PNr?P#2#@}c}vaz3^D1^CIpW51v=`PVJK$6l@RUZZ1gyx;x{ zTfOJy*UkCTb~P6MKD&*NZ>artrx3nf;|w(${L^F5emgV3|JokU{FdO~9)rHN3pZhU zGG2XSS9_l@jaT2=S73Ny43!M^`<$Hb?WGz^|MP>rHX#3ly`JSSNx=5> zgS~nVQ1HaNdAB(uDj;-X}O?8LyrV_g~(Z;Ox_Qoq2x*zps+$wD=hHjZ)R0fbU`4SJt^t;{w$L z=I{3KBxe$1`rc?c=Q)j~{#0-lYb^Drg0oEH47DK<-ml52;H=e{_FwwsRB|>GPPpnx zoS#;9)K*MCQ{NwYZ%$<=LE}*gOZvchUBHzzE--Ef`Jp+SN!mO{hGn6suJJZ>w@hJ5N^#9M~)N!hA)Ba|E)DwS|BYV#(!leH! z=MpVnpva$RIh!?}qSozKYC%qYr_y%6zH^-B8jJk7qAyDRJ>RLe!=JwkoZcE2u>BW0 znT#pDhRy+vrT#Q>juKWwVgGk=&c)6RpP@dfkByy<8cTg_?A)qxhN=tw>++n&PH)Ej zq5pj&=Q8JB;lp_UK~7WWe#XOKy#65Pa%VK-`PC3#;f!Ov8glkQ&Xvv+j4${b;;Wn) z8cX_DJM);o3+5yH=3nhxveV1Ip{{YR)Hp-!g!K2#zs9My%b%ZSPA!c^Uo)q^#u;iW z*7Edb&ba~pwN4}E)BNpP=T42qKi4_^1M=57Ls-5Xv{#jLoij4PZ|;m`{umfv3(}iA zwfFe#YvDA|SnO-zG}bsnEe3yY%W2_U9gx4lX%&#a!Rf&AvrRaEnsbA5Yk+^F)06p_ zpNwHQI^#5!{IqhW2IN~gPqF;JV7%?qzLhgKz`x1KX8vR-k3Q{ha#jcUt(~`+f43fQ zTRYXi@RwH`rPPL5Hcl?_6E@Gn_TJXX*LYOIZopMkTW2NnZ-V`ZnPxlZb>`m! zII7w?8<}6&9r@|b7Usuke!8=h@ohih_|V=tO7gn>Rsr1dOKqPT2>d?D9h~VJi+?&g z&k>)WPdYkz8pC`N>f3iY9i628SDZ4W;Wc6E{%lf7M?xAyz(?dohI%=UJ5K4w1I+tt~{e6qKzbKcjapX}}G zT&%I!+ts;7W3jiZbA!eiYC5#1GPzxyI|K6Foc;m%Zq5*ve;&MAA-9|JkdI$A_g3dI zjb(hl&6%U|DAgV2_jM9)bKYXyn(?<9%lLkq^Bu>h@%#?wXT~(1-|57CgZY#E+~ri( zSn_k1ld5rsdN~fB_j2!YP7lcUaLx_L_i!4qd?K{x3b{R;%LDQ~o$CYgJ)O2J-!2~a zFMB$jef(Ovy__i;?=_b7g8qI$A7>TuRo?-K`#Bpm7W?}0{@XBjfO9(IJedD}c=15zBF4|b{P)9)?{%6pt_b5n zlid59nHr0}!OpYHF9-cinViASVvWV#Apzq;m*bTTPEuOE$arZC3u zNq5g3<*X-6^OM}s&Nn{%?L}i8;~?gb>>Zpt);TSJ$2sR{EcqMnH1_cgHQu>O;|yhj zKStz^cWz+Z8^-$)xf7lCjHkhPKO%REb1UOTP`)E_r#ZbDpAO^wh}>DueT*|}AfDrl zV4Qq9;(5*^jL$y<@qA}8V^s@rt}~nQT#XkwFECDnT#m@icNS|b<@1WOjQP2GedQJB zO^qeL%bgDc^2?oVEI%3CRwr?}^A%$U$_Md5#vP%25dXyZ2Us~pY<#EdlP-^*=Pq|n zBdlI}1J1urUg?~zv84Z+bFs!^?`zH#EdOalsqwk5Ie!oES2?Yjzfq5;tDFrQ)Aw|q z?X=qY#3x@kWwrCI#`1lgHBKSP^Y?YuIBDOby?ga~+Yq(JX~3A)8`n73XiWCqc)=Q{ zvk(6^vcS1pW14SH&V9ofPB`I_`S5&@`=%2)g!(fRD#HHGJit>lmh|3qUi$(0lhlQc z;e6cCH=WIlTQouZmUBSkQEDdW8=~HJ>i&rGqg2PK@IANOx1DD+mi629&OF9s|9aOHC(;GCwh zeD7(aQ;RWuA9yq4Rf*<$Kc~IyY%d_Ek|II^78C^9F9a%}!s9<@~`%P99@g z-`?UZXH4e>w>WDxo~)3cJbsJw9%Eepem3P}XS>F<{=Fgh6X*ORWFN}cx@nu!Nn^4H z-Y9i$*I3%acBfwm4-3hU(l|qX2L1a7x!axbKK_>E&zyvxDLuOHb&pd^2&A#^!?7gPA|qZf7%)UPA9Q~8;Y|&{bE+Nn>hBi~4>^C=SnBVO&H%>rJ@6l$0><<`@E@IO z$F#o_seb?HIE-<8T3hZ%=V8V@0Qa*FJCigXqrb2HMU^AYdm794xQ{s78Pojnh;xAA z>+jdw#u2BHFWuoR*B~d*8n}t9|mLI~O`{GN$(So3n{Awy(tv zesfy=O8T*Vz1HA&=V8XEe{lolj@Ov#%i9+j?vupV{mTx^bf3{!`WMs9=lE0~O?M4r zsxPLyk>q)PZMwTOmilM92Q-%YX}X6shV@A>^Kh=|8ii5WoJn(w&zj1Osknp^7+dufP&wZ<80G(4X?k$0ARJ>v&q{@t|k*>1;x{5kHe%-;m_#iotVar>3I#@X^iiM`SJ9;3*8*Xo_CS^FUEy1ft{Xr zvAc$Gw;G5WyBisQTNCkR+JD}8(WZ=PylC3^iXx2X8RzC*RfKW8s5$4_Q2gtP_;?=j zvdfwmVT`{puSF52_$}RS+8*)8jqX<(OL^Sre#iF0@;E&2-RS-l;J0#rWBws{o@m;* zl?!*qL3vaBsA}yx8q0c08#kRX^_Okj6pQKy?a#Gw&)0Z&;(0LM4v)5RFConRX&d(n z=F@oF#%-ywq}Rsn!tykpw{@p5ru5pnH%I*GwRHz+ygP9y?Du72iv)}#!`Om+&UUd`L%P;(>O!j3F{GVyLRrSjNga;uTOHid$mtKs@l6L_)IW7_Ki8P- zef;STZc-W4|AwBA&NMr@^%>K7j81MFjj2Ccm)F_N(pd6)i#tW*3}wLj<-Ym1xYf#{ zz6_Y$BJSe8qOr(#byqY0E`6S%tGhM8@8<4eeqCre1?k<~qZ;ou@O_2#dAGXNlTg3t zyWOp+v6RQ{?l~dcI3$0S#u@4;w6B8n+udt?{O+^waPRP8L-la)X8AVyd9jC^NqqHF zL)^da=}rj9_jI2O;n^JjCs>auNbl(`4)A-q%L4pf?z!hLQ-!s?GV z;rxHzAUBioL$F`EGjE9d7UPx|A|B>`OE}@IM0o$S;sfqajOjkJ2i)H@9+g1%nLXgf zl}CF=CA1ii-V?UCob40nRYQvWjD=^BeaGu^ow z!}=^l`!z4q&1Q_%`ooJKc2_V?hVj*HH^zOJaVD&nxa}TsKhs$Bjdk}jzXi0PKFMR< z!#+OT&+eA5i1tZ;GS02YnEI1(ZmUX~pSbh^xUX{IIJW~~?oYAn<@pXROz$WL=O1mvf?`vUSa-0uSNGu-%O^q2T!rdv;A@!u@> ze2w9IrLcaKpEAq6OJm8;YU9CKI3j+oCEW}t_z=a%@njhLzSxm@3SnN=aywW z3+8|KEqu;RVeG*Ab+d)fyAI>GAw9R<3vL~aDL;mq@1Do}gHYe#eImDMfS>I)XMX21 zV3lrRw!4pU#aej3N{-vK3fd$3a@}h+hW$$5PhFVnw$oVZTb_GsKt9jy$?}b%KX_qb zo;x7GU+4~HegznxmMmQ8PVn)g>P7bjjio&7~DXP`)f46SmaJ6%>BV4 zcQ*5>KUn0>XFkm@7P(e69p9k-V3Au^W6Ez-EpqEJpXO_e-LZ@*{l#vfjq&BY*kZSu zLzvEsEp{7fEcPvSn-FIE7Q5FlpX^)gwq!opx7eM@nCx5ZKC7|Vx7c0He6nweTgaH~ zTjI7%^V_$??WM8Uv&0=hnC)5O4q-mov&0?Ae6nYW`xRrdXNmj0#&mz<%7shZwtvI) z$iBB1=DTAwmis@Jx{nb*q5p5N{x)~1JC$+!&)|Ndg-hK$jYp}Tj8}4ex-Vp@`?|(* zKgd#dGsV~U!=+VT>h`Un(^q&uTw3K<+=&`bQV&6T+ZQf(Bc~%@o{v|!Ng7N2UE$Ub z;Y&1@`oF@xQsWGD7d-EMy>NxwoN;@2-aE8#rF#ow{A}gd3tw}4Xe|0yx%X-;`c}F3 zv-}uX&-{JiDt9#FN1#3bzHqHOj&TF%KYm~Mx;vS1H|RfpU-*_glkq0#KYm~Mj{7X* z3u++V=;kn91O3PE3*UENVq6Z|`|k@kyQ>)Q(D-BbZN?AQLjI@j2O5t_=nV%#;$Ph1 ze##i{SG}S74tEb>J^v^N{P;7x@`pF@-3l6Ks5UU3l{0s`r)ezy*yWxPkl*E=&GNfo zetXrpUGBMzmw?)8FYb0PX50n(lQUl2<6h~Df9{K)yRCiLP+z(?vwRasKV#UJ?yLZR zuRG7jPjA21-522RbH8W)dVRiOpWCUHKY#n(?iy#PC7QqAeJ#NM+I@rhDVqPadoaNN z#yu+Wq5p&LbGpN8`}H4iGc|_&NvL0=u0G)I3h=*m_c6b=*8i>h8}SoTUcvR4gKqRp ztuLV_;EI6D6V~O`=*90`S7SN9_Pu+y#&0M(|8~f2sPQOOMxS^4!M&B@v;H65o{UNV zkM01%tpBk4kjA3_CwGFzqW_3HO=Hpjv%A(8KR@@VyIEt}-^x(~FZRc$Ez?-mGvm`XFedxs)2g0@@_P-kKR)e3jitTCr(L13^gr=wf7duem9=m^ zCO$1)V_9!VOzX>-#)HJPM+h6M;rzr9m6$e;F^xZoY2z8wen(>3V;W0(iD^?c7JCxY zp7HUcpf8`}lfE)(2N+ZS%B1C=jro)DwoKY4jm6$FX z3R#}gE1TA^zV>q z{hh)qHYZBhR6z{)TgKpz9zyXX{hPiZy@Ib^AH)(ablw!=_nAy|=|7GqZ>p@gV0v%C zU03KI(Kl4bH`TDJsK-)6;oShtZ^_{ib+vvR>s3Zwtk2%_-)V;l z6P5N3-=ovvf-Ut+3wq9xaMBCUllu8GQpA_^q~DNuguQfw;U=f|=bt;b=;zyr+7Noa zrEse#JZxVuUQ~7G=U-`m!T6CP{we=bzZmpS@$x(6-xFIO2>QuuC#U>N^-TJyaQl^h zQQE8Eu-qyCQa>+#I@SMDy&`{{8sBK#^v1UjKH~m;Db*Xn)UK?e^<@bcKhnBQq-dS_ z`21+mdb7xhe$p2yS}zj5q$BNI!cWD+a`M*cPx*!F@Begtk$Iv}Di=eYIf~{574&|O zS%jtBg7PNs#}sdOGM|@tl3y7wC7f{a`Ffa7?Fibhp4Uf<=Jg^MZf7!%2%qA?_fWY1 z5PM3Nvx?^ZA|KWtZs(#e93GBG<9)Pf-Y@zket140{NwA1E1Lg{e98K}=ZKrXq5g9Q zKX(x|)x8@j{L}Y>^yU48hp{|SPoC<9slM!q^~X|sCZc?V>j#`l<^4d}_q<>m^1c1Q zk}-V$o8>6~f`hbTMcAjEOZ8T$#FP5^=dh$B^;~diG?sj6`StkuH&TB7n%#yf9Eg5~ z?~+a?ec})Cr%(wOD&a!+JVoU-xhd%h)9YqoxMzPDQ+&A1P3tif@=c%o*_Tp$3itYx zv_eX^KvP4d!8=-*pRj(yhWf1x?15J_)w!EV4l&A~9Hr;}iWRMp9xs2SPs-V|SHh+L z6CA6b3-ig}#rrvtqjoL%DZUOOa-^qtzbbs`AEdtuhll&2p07*4A@hK*`MiwO zYogwMtYE5--g;Td;oftC@MV0b`WI|3IBq=t2%PDI{$j?%NG+A~Hqwad3*V+dKK3KA z_}H(|Jc;H_{(eWs;m<*@KHs9}E#CYi7#>kA;9E4PujF_U)wM~<{BVD9QQweN?aA zyOEme{znO8eL;-%1}bc z6ZFe@Gl_qqbmK~h4)H&PZ=hj4y_wHVooM`6a?=vX?zt;Se^_o*lRI~-&5^@$~C<1 z8p~f&o~PQw|Lyi5?S#s^^nPB(4U+f9k#KyGBmJe1FDKfM{HKf;(x062AGQxzKdE|h z{mUu;p}%77yO%y+Ipx1o{)=6I{`=0woa+Cu9>(tfWZg&RS%PI;42R1&dTL*r{3`yC z`9au!#6Puf|9{;t(oUqm5lrQO>V3m-I}yJ~yAi*glB0e_{37*8{3BTWck1~U{q?_h zJxI#+zq{T`J(BbVpQ=~5PVTKoOFI<52o}HncbD6Ldb(1N#7@EDzf=9yss0Mv*U7dc zsYj>k71p1V_n-LfRDTup->G^<`@+&cpKQB4Rj*3+pFHnMd!zjZ@0?9IT>LL`|J$&% zqga&uVW^Awyk_`ZRyh26KJOVm#}&qOe$!Aw<(#L`|EhE4RPT%L8wJa~czMe?36Z1n zj;%-dlwR@knW86bkF;aqOMMH6hvU&c$^ZO0aVfWd_jz$S|3c?yEcNa@YQJGWh07`I zr!b%V>y@|2OM4Lgv;K+c#V&8*Q~cuPO@1-eEqwkb_`ZZy6fWn3C|$A3P;$PA&i#lU zi{H11sD96qKZwftD3AZhARIs8Y}q|1XQ~J8rTmax5!L($;-9kSSYMxmyPB`57x{7Td;I;SZ3UVi^W@RxipQ1Htk+$w}0 zi%|K9Je}(^6kW}aV!}$q54~gL@clL$B{1LX)geOl-pY79!_DVX7xt@g6KYn;bP2ls8 zCC7`+?-?V#KNlWRi6MQH^?6*cTvGLWMwSYPH`ezJdUEnUh~($<(Vkz?Uzc8ReB8qg zmd{k^d$Io&eL-v}s;_WvvmfadEaf8o4u)g-ANq;vZ(N2akKvb(^)T8wW^)if$>Wdc zmwXB)c}s=mD*cV>yNm}S|4;BYwu4yV_wjfUmiLFF-Bb9St;o?h<@x2%ZR9`UpUM3L zVvOG_kWYyx18KbavKgkIptdYWoT$>TKwL)M*xj=m z^_?@%!P{!(fz8WBzzBia|Hbwi;Dfim;PVE z|16bx!NKj6{@HhsUj@_i3CsgD-%_Jjqjw@jVej$gGeweptJ0c3}7y3)m4cmP|TgnH`w+%Ig_1wVko1P8dkiq!$KB}D8 zhp+M+qVQk1{hT+N(h+|T*@}FqAG-d*cPkxAhr%tjvo_+08gVAlsLFW@n%~3qFP40*S(GoDpPGs= zyieZ){Riil`VwEtPs(5XDB)rKA}90WAm1#S?^C#`{=S#e31WC2;pc*q!y{_!dW;uU zSMd9ye?<<<<=S;*2kG_RzrN-fs*hx+*i}4z;+v|j?td+{4(b)wo0GN6*7I45{UXml zFwfKZjVqSl2K_Oepghh$B|nmWNpk4F(&U1CgYEMCL;AgZQaXkrYN~(0x17-r;vX5O zq=(!2o z$DBE&SKts_#b;Eb|GtKcbNIi~WQxwVCI?@xKwD!cCQ+ z=gFR)xxXM^^hDH!BS>EC-*S}r)IK6=;7r8PBDp$R-sJXUsml8KG@@>Xbv3kG_!y2@ z^isMW{zTt1VyTw!oQvZX+3Tev@&3Vj`^BR^=#MnE6vdBl{AiJ1B;JYX_v|4%tfG8U zIhsXS^pf9?<3BE+=XqWzIr*GvVLQQTT)DF;Z5})e7#d=^phV@7}OFtp~*Po>{Zkg&a z_(m9}FXLE0-lyry`!r!3-ZznWVu#c>n#UW8?qia9y`&@9QmIp^{3U*ARP=}C#16?9 zuG?Y09?|`h!S^nB^;qsnAnJvSUP*_jsTOd59+np@>j|P)#xJo;^!}$&8E+-O2laZK z*S<>&m;UGn{w~mEdLC=4rF<`x#1}e2kFTcsjMq&B_twwJhFVvj%8l%R{U}}^e0u{h)-pA)aS8RuvBH}^@8_Fpzuxb*)a*s*r${Kisjk=a39DFmINs5#QExOPC-vh* zY1n>KmCMHYu2pnD6Xgr+;&VT-FqI#bKhBrS!?*mfKaV9J)>m5mQ*!x8dgMQg_dh&; z(tb$sb|mQq?JyOdXF$J;okFGF2h)@OSK5cg_lbJ-A*eqrFLnww)$0D3KHTH@A?CZd z9b%8zFY7tduKVlt61bO*+jlIxMUPO?7qr(@Kc!p0U=K;Jd(FPpH0l>qe#N57!gQzqcPq`HvRmU;IP+g&@b}Lw=F`$FfuS zhU#<#{pIZ^9pBE_`ICAQtY^j350^)*^rYQ~?-@_h`wUUFmcMgcPuF`>b>;Qc^baUM zukpIL=%IFQ@xA3b8+?vK_WRAE`$FlyQ#lV{6@|a7+cnAI^T+y4=+%h2 znA`g@eICSAZ}7PgnNJh8isVR-q1WSZU!3ymQCYv83+u%Aye{954r4jzOXpE6C3=JV z!lmEiPX6)a@5R?nr zS$zLi_LW6%Y4RtlU+!~1QT>wtlI6ueGH;P{c!Gs`;ZpBUcHM>S@X`xo8XvuMWV|dn z+*B`&$9@y`|MWSV2*1Y=RZsD`0V+p$FF^CX=Q`@wPu7muc1b#7C;5fO4Xl4*e+99n zUgUMuus{AR7CY#iqF3MltiHb*ugIQzXq+nXDpFn5dusW&J|RF;Wz-G=IqXyYnYeeu(y&{ zzaU($1N45qsYY=>jeM|9Re6cZPxO#K#XoQ^3;crPoA{CZ2J^ZLsGP`e5tRb-F`UzA)O_jC;<5}v5N69}Tk9J|XRM&c?zc5wm?PQ0o=L-gxtEsLw z{r1HQkEo6rm|j#J)c~6r30OyErCjNL$;k=;M7xbTh z+#`J!+v({QzfP-7c8fm3aDR9fh8t>}wny?`oJze2mw##PVZX?@ zO%&dH($8_0Dx8Y-FsL8vzwG0P9@^LQ_ID&aC@1y{4dczAd|L;50$;su{K@V%e{e!nYx zzE$+l^MyB$DM^n~o*s!u&oL(-?{mG6a{PFHyCprkM<5svpYxu9_KWXZNj^os`dX|< zrOS62gyR_b8TX|{kIXMu>haU-Ukk>9*!^A z=J)@a>whpOVa0;52qveMB|0+7kr}eB|V|nhx(5b z)g$Q&EiIn#7wY%OEp_KV(Z9vpt;mUeCDD@nSyH@`rr~0 zp?E(YmJ@%JrZ3DFJHqzJAG% zWj-zI0dgOVVEN8-7}NS<>HZ4eUnLmr_P005pHNvp6F-LYMSN2gcBOhM>&s!i(m#lv z|1=uT*CBnsn5i!Ah4sl&qj-OpsP|k)eu8y&=7({~df>fk@VmdBhSL|m(6GN^$v<8f z?KRc3$w-UW!*IN?Ucq5Gu_GK_8kTsX7b)(4%X(ZmzF*Go9|@QGD0+#SYS2vbr-X~V z@F^XO*Kxe{UrC?lrv}VB$!`)rOiR=ESLG#sY3ay1hS+_g@kA~b4f!~`y@FWyVg04$N90dbPUOS%uf`AS6D)p__Xi)~ebHC-`B?bwGrw0&;ou(~4)+Ri zc&qKfdUc|9o~T@HUPmuYp5)}c@7VRdG(EF6P=1KQd7v@D{;ah4;dUo}4%5=~#A*j& zJyL$L^oe{dzCS+pUu`E)y}wt#|3Mi0D~#_SPerd#$v36r^+STg@hP0%=kxEwh(57P za9F>@r|@7q#-3Q>3-#N9{8;g1{avV}BRH&2>=P>TVg2EFCEHWn&p|n(=sUk3==;53 zADPdc%Kd)E%6)d%`qnW5yKsT<+EB9B5fM6im-h zf_p%|5YG-!PcEO&70`KhxHp2&ZOc6PI=+{f(zBG!?}1=Awu=Pb=ikEbCy~6NgfDjb z!?B!#;bCkjI+tarwfY`3Q?=yt0TM1$^wR!{p~gH<{-yAsUTMepU39rWQ@-Oa_H=EG z@!=eUrUp|ux7dXA-pApRZb|9*^Cxx+m3ZNNNw{B5?8Wj!K4KZCr|b1+Ly0QC_x{Qf0?~_x%i~XP6BQQ+gzu~R3VL$BWJNld;JfAb|4*Rdjzjh+! z2Qik9;PH@0%t!t8WRJA7Fx}UM5>=$vwd&(}v)i(AN_vW`UOtffA}Js`TiN7ZjLf^u}e&r(fC{pZZMqAQ)B(1_GhW@^m((0 zT9AP9a4(>K?>0_7*^%N;<@Xt1(a-g!+F(%l4ju;@_eBi%6f%AyMCtutQ#}FCJ=p$I z@22=|G&YpT-w5%ro_E$1+9~Uyb2D&XEUy<#)a~9>AL(^ILkX7qz^PtE6s^}p)kK!N z=r{Be%tQ1!5{u(S_@3z~%f}VT%e?`lAI`by^N7XuzQyH%{TT%Qdk=gsB3 zO|X5!$OG*f=c|8T=*7qJi0+31ebBEVepl}YiGJv}xxW)irM}9rz zR~e`1TpONmO5^jHCC7`XFB_3RDW6bZbbh^abfsY`FO&0OsUvz^A%Ed{PD#HcIkfMU z-Z-y_s^u^~m?};up^!k{;bRTio9`?qNL%`(Nhk;(xh^ zb9FF($rJ-~+hWDJFqWnv|Sb7YeZ;>9j=T_&#Qr{O+{OXVo%rEk>y&)g#t?*0J zFZM3b?ZQ+jkNuxuNuT7*qIs*t>&NHJiNgKX`>-Fi_x0Y(x8?m8i95?uT3b4Nt=WE$_%6gRa3YGRn_nXpv_kTtH7s+QF)o%%>d;TP! z5x%d_vrq18{FUb~5|6??xgju*!+J04(;|20<@6jR;g!IbSgsh3eib?Sjz}yl^ETlN zmieprQSQx@@FRTwR&XZIPXzbZ?<3H;L7e}Ho#I!brpj~3-Y@lh6Q2LI9*f7%h_Zj8 zdPL_~O!dQcBv19hRQKq7TX50}!y{@nj|ZjkWxbQW3*+7MAG8np|A#SsX>U*;KO}o( z|M0CVFkK0cDEiI~-1GYp%EhTIe7|VZhY-Vkk6Pb}%Ts!mY6b60V*bMVC?A%3;WqLM zeGkXmR|{kR`X2W0S3iP!rN8j*6_@@(#xr@Yll0_0AEIzi&SBCcetku+A6aUgrf}|8 zKOe&wqT92n=)D$LN9AzQBk#Kit)ickO!dBA2eDL#nv{<82U2gTep#x5eopby35QF) zKsjtzG9U7Xqd&s+AQtXDmh6%G{NAqPV{Av5uE^2%G)$%Vek4gp!fD^rVtzzD!RNlh za)QM#t7JaQ?-2@L?y=d?g6fN`$5J@Vf0v{Emg+tQ`LG_c3~^MQuh%Q%)MdQxA>W${ zQ@ICCsH7+93#I#PAqdJ8CHI$TxV7b>t?s=hnn5v?F4zg4oeqIRsU$Ep;@-KFV>7Dw#pZLjQ z{gER5S8#jXdLj8y@Uwc|!8>mrD?C_k#q%rui`e~7T`x_wP~V$mDDi{vg_f4TwcW_x z|Elz5U2IurN+;~sFsAxZyq?RwNm4%>zE0}}gI}e3ff&aP!F}~TRB~^ycW=|B8DvK+ zyF~wPeI7&Jk1>>BiAU>MvF&_Huk)G8ormeccT{x0;FXiC1Kt~2ca(At`z018d%XO8 z@G#|1?){PZpWu7yk-sD!u6yFVD~2sUIRI^{q6y(#lcvl_n>4pD2}eU7;r$?_}lP)z6i&$LZ{yRPJJjQ2b5~){C6C zks2pOv7e^z>`;8fs0Zn9WvG4<^}fd=^CMw=E^8-K63ar%OPx_(#yskDv z`^i+~FX)%_bC9X%oQ74D?{K~Zhvn$rRg>S#H~9Wmn0G*X#(FG#!WO3k`ylLJ4keiRLd>{rLC^(i^5&&e&hkJy_m)+eWxQ0mlmo7yJDF2N zN06H8Sza%faZcKeC5L1GLh_L!y}162 z{t-RmFF(d|AZ!)Ill5|;{h>ai-^4F6-k+uSZ7p@pZ6&vl8+qSwwthduREV)%JUxT- z$-W6vEZ?ppDSXUVNKKWgsiCUse#BJw>2)y=AH0&%y?h8#Q^|YHByXs2xZE#rym0i_ zuspJ353f_oIr`(Zck~a{-{SoNerFf=MX+D+%gOhYJDFrZVXNpn)`a1F8uT+*zTNm- zmxNP1lE?iP;n#kM^wD<;V0{$USN;7Foy&v$Cmv@6zYTU`I@eA|YAAUQly*5*+Yjr2 z{JcgO&a-m9l=P{eZVWP4AOO)E_*)md5YKcHVY??3Q)1$~xRovOfEjUaz(I`?Bz!rC!H1 z)LrArzWZ;Z{7U<#_^`hP^%&cC_4o%lRD1naPyi zNB1GMl!Q;?`ART6QuN(X*{`Q|0sD8{ZY7+`)q8)LvIlp{z18?m_a2deHxiUZC=m zae}C+YHM*Y?uCgJepvT^a$XMB8D^6HV1Fv*3jN!8lrN(2oh4o`Khb_j+O4dk zgxAHSACmr^`hWROvV8Yg?w9k%Z<%L`UnHJj8GplA!edby-{4#*Ja1!9DeY(~pIZ%w z$C8gFhw}^U|2p#gJ17VJ=P>d&&4=M!Tmvef6P-6oKNg-BOZ_Zq{)hQI-h9~4m+yIp z=d~qa>=!9LqByR~zJ=5`nHS3VESSDy5BKtN`@j4ZDi7it>K;8#359b2x}Wjpds4nu zck-v)_aWmn#iw{U9)5H!j{6a{>@$)tiI4e_bj6>qmNNf*uYl|>X?}|5Xed5>SF990 zvc5w45&tdD`7o{JTa9Wr2)_o;h<||=-FdX)2_4|`ve8S%ROX{7}OVJm^VR>0^ zw~F+KS!Z7B)=ZZMToIQ$bm?=t!PuqQ9`zSEdb^E;0(^S#RNVLrWZu~+)5=K07s)nz;% z_hZaQ4W6%#+DLM84&u*-%Y0AHn{+xt^R?hUwzn=D>_20NhwnX;b!nmdCX)XJ3zhda z1q-dc2=i+w!D0F`pCh1ic$T7ZB%)gJKGZ+-ywPNAsjv0^9o%OQ;W%zo%|r_4fPt2j zj-208;l(eSQsW&=lTN;&nuk6I>SN4VcdL@O}{bL-PCO%M?!X#oOaP-fzWt z7+&X0uiOX+#%Ok(9X94}w5Cy8BroiXIVm}Zod^9B){k9Kf3ZK3bp{Ma&KRf<*p85o z^+Ce1fAWXZ_-g9@48vvKCjE=-x5#`fqb}*A`yjk~)Pr)~ev#-2?-!LEF8e`-3hMW; zq%ZM<>B9Twr|i?^eae4SPol6Hy5Ivo}8S| zmwf-WOpeJG~#UTBzxv$STGU z>yz@Aaupmbe>q3seRoCt^A*o;1jnNC{2}yO-UkpY_2%D2zvubk?-Qs#(EQBH2l-iW zn8HkqpJO6=-yQY=cpfU@VyECg^!Y)PzlR9lC*$*kbS~cu7kQy_o>;!8DB(g&<4Zas zFEkhq=gsz0JrRCsc7^$+*%6kPbPnqC_Fn$QPcknJ<8b|qg-zbC6+LneQ0gDWgYN^L zMfsL+nWxMB2VpGz$7(rG#8l!7mGTc$`L53ao~MVuKPK%rR=C)EnLc+Z{iW1TuU^Kg z&*AtV*P{C0S&t8~0o#K-}>3th`KS=MRp16O)<0q|;!FT!ed3w9_=jZ-Z@HFn%1XH~>l*}9C zUI5|CJz#PV0Lj7m0)C%P>Yv=l^80W8dg+}%dUYv< z@cklQe=FxOr2NQl^8HtjO8Er$?>&9tdPD2IX0i2NId3Sm6VFfnEUw1!!+NA%NWT8b z&yQg$?N_MCA7i~z57t$s@{sTG$~;}2GKsUGBAk`}dYoKK`$TAB1xwxKA(d$w;}}#OLz|N7LRk@cr4$2lks`!eCkgG zhsRx+Cxpkda6LwRwps+geAPs)R83Vb{1(A4UtOW9!mqb+g-Qi_yU{^SGdjZWb~Rsh zSG%HjsX4~o>P$664UZe9G9$y(ocLj&V>sYUHO0sT{wy`im;=9O;Fql~SJ`T@u|Qp| z7N|U+D!SShs_o0I`x(s8rcYVqZ%1`59lWS8yfil=w{$; zhVYMoegyPm_-%#XXYktvVY~HjWMmJ}&-HI)uT^{(zrpjEqF!SH>6`IZgjYMydg=3*M@0 zw1rF`@@ zbcC>u5Y`dGIzm`S2)o(Hjq7AAitB9T$K7JQ64%985qB5p>1Qm8-UGD1F+V!c$c5iZ zH3)t~j4z@?fDVJ-NFx$A+9-^|a2b~Y|4%n2#?64=EaMlbF+<~?1)1mJmksH@WQ>R3 zO0^vLuNq~HSB>)U8ydI97#p|Nm=#xGJZWq&M#k+msv6&c-1o+c`0s)K0KXrN%IYVe zzZi{;U*T5>zu(~ZJN%N&(^ZnW7-$;MJfJI8Idi)z55MZ>@VM&c>bQpHrK%ywG&CCl z%>%kpHG;545Y`C78bMei2y1H2S2vm6;Fo9I1h_5y+L`yjFVAQP|EHVx!Vmlm|F<{) z0l)j<2Yxk2t4E#QYR~i;W@X z7NB`RSE`}rXKIAGM`fD(q7TDw4E!E}-&pvKGxw?q<`3{&Y)mi@0?h-uQaxrKQBQ-e zry=}l(DgKgKMmn?AZ!kV&4I8v5H<(G=0ez92%8IGb0KUlggs-9javq`E(5#_@N&rK za`=Ba{J+9n4!=BO1^oXS*!~*){~G+i3jSXO|F44oSHu6S;s4d}{~9w6TFhejnefYl z-%6FJE{Bl?&SPsDRn-~S)U=FhplL~tQM);OKhr}@ zdz%=qwHj#t05c{7=uTMq@1Q2>a0C2I{5572PTqBed(jAYvQT~qj0H0uG~kkiPS#WK zBn;nWw-9HkX6n21;5IRJyM=U)>dSJ2I6N_mda9^_OlNWUJhkX))H_eT-wJLQGv=u? zjw;C2JoVr?3VOzQ%2}o$JfG!JWre`LB`s7)^u|7DqUKq17P% zB3NNciKJ_Nbs~-9f4bXH=K!4tCuMGoOksa^(fnSK?rcwA^8#3jdOkwouSEtiKU344 zk@1=yicHb8N_3W{^^7Un&f(E{Ce?!}Y~NM!eGV%%A$nE(3x!HejJAkB8-|c6fFqEf zY0+iI4{)MyCeS>1@_HtkYaWCA)iZK+J~LIm)(_`fOe*hO#% z|7Om|c9ZJQ7mPc_-vKAyN5plC-~SJ#GU5)Hjp0p^A?kpc0p$hlM~5$tt7*LeD_B{o zK|I#icR>!*sb?JKbPsbm7Zy<}=iB3(LcKpT{tK?Z5sS*HL45Cb6x7@O>hbPM-4Wj) zz9y7QulW5+!Uq9Aspo)wBwrA9y;xriJz8>G);F@352bOthA^ zqfR7AmwTPa+iLm!N>xcnu_zxY7UgST`~;}~gDuDEG8Fw;%cA;LOZNwT66))IB2(4p zeq@ft}jIg#F6s0lT1y`?=l{PDyOWdeGpB{pR4ZyNQNP?+ z_ea@fbGaOHwVZ8yV%E&Wa;whcA<-(_{??TxyuNHc*W(pT3z%+Tx|!)G=C4=6E!j!i zbvoGZHJA!dPDzd99~x_@Ym@T1Kgj3);S;mzR;4;79W${#c1tp}-|t9zTeW`(?fN8s zE7YsUlD@EhfE9wdNe7r7W?IPUG>AT02m6!V@f0t`B>86Sk4S{tWh8?ALZ(X6^{Y-K zqG>%NB|?5miO~4qL}=VfiI6`V$Ir+zRI75-&h9ClqEToLfH2NYMRGmXSGLsrrEPnVt(bzcwyE%IXCDGbPFdTV{1%U3c6^*2;^pxEyE0PQ{pYCTYFw<954%6GE}^+PQqRKL<$ zZwtc&J6|eqBwPXQ{gd)p){TwOpNR>VfPG(;AIO;cg>TFEw)Q~#|EYWnqr*ig*M`b%6?0iGm-P?SLw91Fsu0l=wS%)L>U=Pd_BHu$lo2d#TG+!&!{yGHws<88s34WLZ z?bt|eoN#9yq|3Muqy>H<>$^vlIwvJ5D)SuF*9dTRn0H+c{Ci;jaYM?e_z|!p&=%-R&%@VBAp9tV zcT8EV!@B{+@NS?N<6GrxMQ05()VP%T+O9&Yh4s!En9m0BFM!;$Devp~c%4Y6gqvXp zDnF%D0?vmr%Vrs=FrQuq@o0YBFpBf@9aa-vPKT^4V=%O{KT?`R$^Q+bG*8ag^XWbb z&9r=`YR2J-2@gZL*RPV8@IJJc`c>*jX}(VL&KnZzN2&dG=kjUE<&&=M?p>vergb96 zxIJ~(c70K$FWWVU?Ha`P95c^2s8so?$IP}HkoILej+xk=8duFSW+__ylq38~Pp^oqYdq0V#A|5okIxKqL< zaFagzvBoZ<$(mL-{y7NickhG`cPRBN$Rqt%)dmr4w-r_IgpRK$wGzUI!hB;ua${ZJ ztEf>44JP1tF)BepdP89Tiskl4N|x^Lky5?OG7dmJI{&mR<6kg;LAnUuL|O*?1J@G$ zWusC}P8*d#^MFjwUuKlXhs-EFuQiTb2lb#%VrG=a!%hi@c4B>?`R5R|CaweQ^uvrK zO8rayD2=1z*?;5Ne_2NTKX5*tWlZf3^X_U{db}zN^b8n(FdX}%>VOZ-pz-icu)AAQ zma!k`nbm0gIS2SdV4l1zB|SP4o~LfBmL8o4&)+l6`fPuFZZGwtG=J<(<3_a>*0%dF zo$+jE3#&P_ldr2${fVk$7CxVS4f@cIr0OknKb%~Bjl$>ZndTJE{}fJV7W?OIJ%4Ld z{ge0?;6|M$)oEUKZS@Ax+*{x_!Rqt4p3aNnJfWYJt1ZM!~JK`3t|3n z#9E={3atW`FW__wbUoixeFL|r4P1{4xV@}kx|#i6GyZbuS1wI0i2m&nLtT-Y&hzZ; z(Q+^^YnS?kF0Z>%_v`hBiK$edr!##fwLv^S*H26xrR(3~)D`UC6>QH6?hg)dyF1M7 z?f~1hLi??smCo~n6-mm&0JCEZjzRvga)SpaH z&l{Tjaa4A^UT;3`h@RslEUwXQ(&xvfaP|cr-Lf^vu%E?Ld51hQ!*2f*- zmH&q8D%=n9y7x}lAAvo?Z4F&$`KzrxoFUcj>L#97ZVWE)>+59CpPxKt_AkNT;e7hU z$z?k~K7BII<5-W+oxIla8}YWm@1M0zY4ke>dllFd=xRO>^LKM_wXTQOHu?RZ)cVhe zNv+F_=+86foRDkcb@dqL1NU*a;Q7UO=HhcW>YsC565Xiw zH#S{^ex#wl7tcQ~iPl1|4shMoLVG{X>#{BC{}%OsOOs#kE1NkV!^nH>Gi1@?=7e?y zcH#Vu=QQe9uF0?CT$5kN+hlK(y(_T!x4ds(XV;}4=-R1%?@_(VTkBiv^svo$z#R^S zz8-K-b?sN&>X3h~H?I6$fh3NzuZ43uFTHMgGu-Q;e>p$ku0Ex%yj?X+yjXFF!YB`SsDK5qx_uA*?HxL@R26} z9Pmh!zn)mod>r=6Ur(9UaDhG7*wB0%)?uW((EN3~ekwFCit##XFzoLK3(e6_ON}yZ*)g(UE;b@>*lEDYeDnfIRC_AlN#rO=6(1) zJUdnkZ^ZfPy|E{PNn8ir2EG$}ITxGMJcXM5bIi78Kc4B${`@ezS?3qs*UfA8*B$ek z^?7PK?i-Exglu^1O_6YPNH411MsacTAMs87k#{X_{tM1SzkJs=#qE^e&tJ=&J*EfT z9$W7{coXH<|9+isW;K5Q8+CC?v?Ysp0e^Ku>=IwPZ+%wtSy$XNr z1dJl?Wbj?E&js7jUZTf;4z1{^g?T-56?C@W6Y#tiHb19M477!PzuUt8yfQ10{Xfoq zucyt})kCVWUzlinJc%XSDzA-R&?ySZluHzQY?P*+d z4X&H!9?|pHNCU6$J~6k}{1>e6ceMKZ)X&Xb(0nh>JGr?P=hxpZyAR@d_sGX^Jvn!m zuE+g(X3D&c4G-Y_dC|N<>(7UA|HtRkpPjcR?DN;y=k<-jH8$?a;NnJ}r*1fIv5jZj zyv2>VMOZKMa9+i89Zn*8EI($7<-dsbxhM-Dfj>F^?a{w_Q2K*NJ|&il&n(>Omb zJ8osTALqBm`LhB&uW^0M3MAg;T<83nJ-oNGIM(w<)qoV>t3CwSe$_YY^CzFnV(+e4qmx|`~@hrW#G zSm#5(yyV<_!Dlb$b&pX$L2AIC-skGeNQ`MLBxOFZP9y` zb%D>~ygBa-f87#rZ-no}=i&{=73?^QcOQ0q&Uw)phwZ)M`_C8)p3}$Yw~L$k{NlPZ zmfCv5`7OwPe)^1E!5Z!-zk0^v2#@2t&*+Q1asmFz>KPUFXL0l058-@##y*_~_G`cU zcIsyontzNsjnm%(Z{XZfhFXJdTI2Ul(xyd1l?_ zE$8atAKyvaUsvsi?$3YYVcr*AcS1ev-+zsV{dMBF`SCuyp@MmN^UO#C@8jo0A`P1`i|G-6{DdO@{2Pk+`=3zc{qM#9^0^?SypZj$y;DLF zf1Ta-b~}EYZ4u8)m8I`q7UAd3j{^zIf8V=%Bff60#@c)k|u=R#^TG;nkL(Lw!H*tL5+2 ze5|$heiqEx{N3KLR{dM6dTTYlwaWMLlfj!T56?r?@AYQi7~E*{dt$&pSD4`r+i`+# zeks3badSfB_I~p#4cj6-PY#^CGxGQ2aQ^AIBYSZi{;g$?=CPuF zRjkgd^DEXqzAy0q>65{oT2~c~v!Z@g)Q^ho|E@sA=BW_b8Tl=)Gw*Txt!^X8_hDTN zcbfkmH*R{s)ny;iydJgw@0~KPc^cPzOzM0+squtb{5oiB@$0^=#jn%pEj(Us49+$_ zzRmjV&&TKAf4(PabuNiyjCg~id0ee|T%-A0 zt$E9+{~3)h)8faS(fn-E{nDn!pW`{`47aKAvnTO$c2lF{d+9|R^tl8Z?<3A$w5joe zGd#DNy-vr`rpC{_8=u#UHoR>wn}ho^#2-oX^E{*dxvB9-XlG7jQ{#L) z%8ASDdErTCua~`1Tp@jn?4p>IzD?_4XUhk1-~G3ioh`FIj=gsF&Xx_ZZv=boyuQcs zK7V$_;(G%7RA;}KQN2vS*LkDC&&OeR9P&3ejJNpv*l~;R35?r1$hq+re_y*j@&=w? z|N87*k$2*LdH>nlBmebI2YY)YitE^4pIx`S$zc8eTX)ATKBDz?RO@R}$LXZj*{sHe zBhH<-xNiIR#K2LlyC>{9>-!cz(dfU&bf9tgcD{#6=stgO^Gi4mM&1=_<$0&kg(5&VlCD=LXzki`y)2PH0we-QE5^mG6K4cky)7@ppvepWf<^|FKB; zE<7JTC*8dH>(2F`Gpq4D^z({yj@USH2d{Qwt^Rzrz}C}wsOQ_C-ReIN4m8*C9O>XW zuiH3}pPz32`pM3{c+LUm>mP7qIRE|OoLTmq4&ToUe(dvH-%Er4gX^$GCaPAQuufD&N!6R>-cQxJv z4d2A|;9chin!4U1t{3k;cUsel_=WE%xcyGf)3l~nv7di)?!wkD-^S;4)0!T`yuW#F z@7p%MBIQo$O~_uR`qP@O#r1Q#cUn^)esOty?=qX$p1`!GoA8`(P4Ae)ml*MUZOpyP zo*NV*7h+xA;tG+|f8x0x_ieNz(!!xE~^4LH}-XTO(!M7v0gjxcM75@x8yd z@9FitPu$&Gh}?u<W`X?6Q+wJ22^sZ>V`u)6qTG2X&`>(&XBwLrB$NTmU2Q{iAaNZsB>! zR)3ug-JW|cv;B?hjD~52fV<$ljOt`sM=#*>hfJ%_%e0<`{ExuD;X8aDvAWfN9%fqa z#C_K1p+B$~&-cz-)9UY2*R=ZYrDYVi*7gUUySDN=;HT&1WangW)c4qskL!kxC2Lw2 z-huNT`1m(?y||{e9ly|<3;W(%ai0zHc$?90pEw!RDf{mPQ{t^WBz zLgyL(To!NO>^bSTmW(-nU+&*0T-ZJ4n%~3yvb34^m&@>elg}G>o>*(1f#YF(Nm={v zjfR>Al58Hc#-%ni{Y{T<{r@H+6k&~g%$9e9l zE`L6M_xVo*zjq(*U%+pJ%fMO`&&NSNSG)?`gyS>~J`MeP@I2_B0D1g=2KD$H;5OKA z{085XJ3kVx<9ib8&!1-RCA0c|N28l&&lj@o{(0p$6u0GkZx_VxpTD5Fi2IZ4@x3=b zpV)r>7Mo9g-t&F^qww>&<&)ed%J|g}~{H^$uI4;)27sc1&PuTnQO!uzP9`u9v+l%r1 zVFuoR*m}bIj;jyw{luPD|2ecr$H|7!_i_GR(6=EJ$NeGh8=JD$x~@eXMVP>*e^KO3vNXv>WUAU-}M*`CNOjZ)MZd-^O)u-!!#1Zu5iZ znMQox>3A7$_3tIdTm5^9L3?i8e8FJTzkZVMc?X-$M7z^rzjmr;huL-Qufe9fu|Cg( zpS<{j4WTE|{^o`*``q~G17{p&M1uM8txfzV%et8gl5&9P|*sgvSns$8x>k0aw zaQ$)@_&r=#ES|Z%X#zI&naEq`mN)%Yb^Pb~%BBTh!a7I$bHJ(abAIuC@21DXd|$e} z$-jSHVDoTh|Elo&Ps4H0UsjxFvfqDyV|D+Sy@&c#e@{#Pmw4{gpKk6i<9jvzi$nf< zU~e?|@2#x2>pc7-q;aL)-*0dHCidIy{ZH8Q;SK$ZTYgvMbE%%j?|zA&Z$~s=2b!kg zbMF0#15N*6^xrGHF45B%#c}`nL|@CNvW)L({4)Bvx#6gNuJU_f{yO=vi{iL$bdy@= zlluG)wfW;>Qu{U3=D%0c*5>aICha&H3r=tI_Ya{q|GkvyZMsiy<8gNFg|p3%_S*dY z#bm3${++G3NgD^QKiW9Yjqb4KF=qBJFPtYX6nl+xLJ8T+#QpaD#}~qfo1#zhJh;Nz zzsDujen#!5!+dY^;CmOg{T-iAC%DOgXH52Lt9N5?wc=N6ylbSdk-kRyTGJfriXHEkAXX< zZ)tm=mDdkN^Un#bZS&VjYuo(&&^G05YvW%${`E!M+U8GT{Mt5u{gi9t`-0~$Dz{(U$+_CkGQT={+20zUHI>vB;QxG_{m^# zia#ET%6r1TcM{I{tPx04b z<5T?kYkZ17|J7A@+<0TKuKwRVpeEt>}2!0BmBlDLB?E80fB5iNS z@%oSc@>bIC2OOUoM<5vb5AP4*FZ46+yWiyX!#uUWQ2m-`_3#|1-5{kOlr8UXKDzPRxu+>hJ|@_OW(%XbB6e+Q(!b@|~S?GcdnL(A8h z{}GV(lgoR8KmNGG?|XXHpM==k?$<@Ef$hE!?o~e$Z_}Tj{QF(p(YQSB->$h7?^|(S zG;rxgdmnIOV52?9J~6P&>P`k%sQxnThh^>lc~{c(IiY3k{yEq(wV#o`S`658q#2k; zzCSs5X&`v}=kYt4<;yg0(`|p=5MHDGxu)HpM^?1^&(#&}{_}T5yZ_$jvUY#oU10q^ z=`#O2gc)vS_%3`;`TFLu;BS9{@1tLKz;V77UbfcyaY$-Y z_OPC`-qvg0a;7&z_s3OE>&N#G=MBXVHnZO!Sh2yl3Ey|%^*7#EMeeohn5BW8|Ayy{ zE7C3hdpGW1S1gFU?{Ch1XT?UfyRn^r@%Db${0q4|K>h;yr{JUQ_+7(_EsEQsxGjqF z&si^tOzOSLmiBu}{Qbk0cK+qvSCO})&FAwk+upxoQt$nW+Hc!bcU${^%yh2#@@?%~ zasK^V%eMA{q|`xA(R>x8m|~)A{`vzAsu7@!w0l z;qq1bzWD*i?}vQm@`YOetHMdV_xt(f{`*%yo4K_4AC}-(PSX#E??=D>c)5S>(Q$>} zk5~094;{gCkmIlL$7=`3yu8=SOyuLooLeZx`B z-;s8Io;{-DF4UpV;SPU3JksvZ?`<9aI69*F><#+7Ui-b%iGf{>oAErG-+SkM(EJbG z+Q9pug&!Jh@Za}e*YGYJPv^kqeG#6ZHO&7L_y4+vYi0Z2QEpP)CiyqXze&HdoZi9n zQO?co@V|?h-Qj;{GrPn8&L-C3@5APG`1`Ph9lrh99lgildFzK}clh7u^mh3EEbQ?2 zX}ul3KfN97Pfwt?!}lklb`okQp>~$39|_e>sBWUe|88f6`S(sqDlQ{?b%(#NT;1XK z@6zU<<2c;dxTfP)oHzdE$~7HZr{H=xn$T&Ow+F6V6Y~9B6Y{?! z8gnN;%;z;ro0j7_)(p4Z-Yed4-1gA(xSx6IO8>sO4)T5T33xAk*^9i7^fuo|KkxvL ztEEjB;r_RA<+jeg1cF9rpy*Ydq^a{PWpqE&sfZ&rQa| zTsPO9aBJgZ-^2H!SJv#haO=vDtxsH+*!p@lxL)tw*6V$o|9unAU-n*T3~_$lt&O~Q zhjV{gS!?9?P*%>|(&66=Zt3vvfwpw`-?47d`_W>@-h+JZRqS}{y%+m?!c{xt$P*y8V-SL=5nds_VO3ih=85$oYw zSM6;13!dxr1TsN?Jy2`pxOZQ*uj4y>UUv0(hrh1zcKqtPjq4*3Cr#D+qna znKzZ6qhra1vU|mt<>7m#&HNt3oQS_~n+$H5;;+-T==yVuU2pE4GF$6-*;M~|xne5M zS1T@0PW7Lo$*KPHGbw*^s{b6#O!c3OnW_GBGNbs_Q~l>(W~%?3%qVa5RR4Kc=~$2J z&#yLCY#o+AT>#T`}LQN23e&H& zZPL6c^Jd)t!uxd>x;E@Kn)hDwZgCMPKQMip=?|K|)8hA-UNXI6`Xi?Avzq$?taf|@ zx3e4ApJ)U76Kh~wKQMip=?|K|)AXM-u(x{}+L2XiVC$6zj_8pF_J3c)aZny_I3C;m z4JTpybi*mw;&;s0RvYGFTW?r^?aK}C!FE~jTx>Hz_Tl;<`>;C5K72CBKCB6{tjmT3=7SetTMQ|9bdb z^mb$TH>q}aZ}_*^ZVCSm-ko7q{z;gX_gG{p%o(VJIRlS`IRpE`+_QhR$VrQI5!TE_ zn0rTrx$7gGljB>SM&;QpHEg3T{|DO`6s(gLw*J|cH=wL-X-T)^m&fnGHrH|{ws*8F z#`Xs-i8T7tV*P2c{Y3bisT+{&1?R>n+i zWz6(ej^g-MuFu)6T%XZauFqI2*XOCNT%Yq=c`TgS%41<+E02Yw(?krx88~# zCR#s-?ZvG_*e+|m1KSU_eihplt#@I2W$QPwO}1{qHq~0dHq-ijY_D&<58KtP4`Tbt z)*oWKrgb;ApKbj)wrg9tTC%Mb{5#h=hV31#zs7cb>yy}iz4d8qH?}^DZMBv2Q@4@6 zjFGmxYTF^`r72uLPfwwDd0Y(%>)3|fpY7jo*!J(X4Rlg(#J1B-!?wX~ z=)3^`{s#Wt?q2J>_aoRx$1!H!aqPpH$FUC!k7FOsK8|}ibKLe+r@PK#j@tIG7CC8= zZaO1F(-|3_&h^kXo$F!hbgqZ#)43jwpU(9#dpg&{`sw$f#p7qN#o061Vsr*ujLl$$ zQ)e)Kp6O@KVC99jU1sqgG<}7|Uuk;MvQjhH?&B7--(sG&m~o4#T1?$yUY^0e9ht$t zy=HA4ox#5Sbq4!3IfHA}&E#4Q&E#4Q&*WNdo5{60btc#9^qE|%$Is+iojsFlH9C{~ zF*cKH_0*YMtMg`Zt)4lPYjxpFuGO<=a;^5xypPA`tOv0N@0j&N%)`DDI1i7Xz!Z=Jz}SeL)ZP#kO5#+ncd%aDzQ@Y`<#TZ}f0g{Ls9=vhD9|d%z-}wV0Z1U%(ct z&h*zU>kW$xoW@qB*mjz2XJCu}vFJ4R^Q6<_*S5H>)AnQ3?}Q$9J+@tZ8b^BGY0pCM zJM9p9yVP>uXWQkrz1+5G+pey7icP22WHY%xFcImTCQ zyX$oRyXy@0|JDWcp7(D4yYOyi-EZ5Tv-t0uZF?KG4es*u*#8gP_Iucd-IO?E4%qhf zKK^^<1&r)Tu>S3~-DKNu+jhHce`wn>w&>wMF{|$qZkO8j?;qg5-}ymqdu)5sa{l|< z*rM{K%sTH*D%;*@+na2Avu$s+ZRA=; zPQf&&Z;YX=_?_->|S3kyi`_=W_E?C9w zd8?=|we98Dw!7ziR*X~w`#utz){Y=uo8=Pv#sd7@ix z>~^0to_4$U&vmz&{g3YR#&g~6#(w3W>t3?|fa4N(*-u#KGPl`ywfmlN!0j;J;NCEP z+WlZR8Lu#BFx_4kSSKf2o+3e?b00*?0_&_}?8U z$R3ux6>LF%NqSiv1vk6r4vc}UUz0vz`b!4_0pE`xxY@mSAS$~{>^8mSAa1w({EBh; z`^0{b{YuE6l8)OS8|Q%eUpkPHe^C06>9K=&jqlz>{|eHFO`m^otMpN`FFIHOIgT-q zlmkz{0`g=gu=>u*5n?Ll-Qt2t_ zX>q{(m^YC5zm4}DTe(Atg*`sEspBV!=j>915A%F{g&O;E~?9$If zWp|tX@n>S-D2_|=9K^-t9{}e{au(w_xccTgMxN8Hyc>p=D=FTEgcm0prv7Dqvzr$~;c0!sx%kbhA25O~4dho8xTj3*gikbl_xPd`(VT@`B}=V!wFho7l~%qN+TPWk-? zUNHBs&qQT+gLiGg=M~6!lJRl*`@zkwaXbxj{5jD21u`xVa(@hiJC?MMmt<4MMMfsBt!C#m;IPe~`KXFwY_XycYYEB_Fm<=W8(s8hd}0&HV*lt^2cS9jPD0e3=E7XK<1ImOM$FQGHw9e zv1H45Rys+22;_dsODCxhgFBY|V7v(0ct9Hu$hswvaaGwQ?K;SKlJTxx;{)jrfZPvJ z=_K_o>D}OtB|jOD%TLnZCx1$MR?LBHk7Rp!=_K>W!U93xYeA{BArdouu9kvYohel6pVL>zb5wlKKG1_^fo2dJeSl zfi^z*^YWKulZ>x`j3*gC2JYVQ)Zr><;{+Ku0q$7x{J7`u#}8Xv=kM{-%Hl}IMP-w; zV<793tltCf{x-%5vOdYUesIT)+UAnR7;C+VL6cPwdr7JpLLj}xRG0+~lLFDgGte>b>e$!X8VrIXbA zO@H6BDd{Bj3~1v6ZG7@)<6xMRsDpRGzKsZW4hH~4Vz;{mA$ z!5vFBJR1UST%e5$-2*-4?dRwZC*f|7m)Q*AnT<;#%HCI z)CZ;KK<1Oo&x6b-8CQ}`(yq!TY1cs;H)!LYu5p9(2SBzTl}=Lck{$z@PclCavVD?q zDcL0LG-%_Io|Qf*JqOx&KpPKe;{lmp0GVHsPEs#RuYk-anO_B&Pcp6sG9NG7O(&@b zKpUs@sPt~|(}7<+7Xxjapp6r>ae~ZG$tG!MK*p1d&&p5IpO;P29tQVb`uKC?qu;?g z2X}11I6<~UGHw*)aajRvoS=;pWE}pJ0%H)|dujbSlJ!W|3xUidnHL3_N3wogHc7i5 z+p9+j(E< zy6Ab5aS4!hN!Cq)j3*hN2DzRFz`d7#@OhGXBU61Q|aBGLB?i9%LNJxB|$y zl5~=KS^6l*d92D$(mx@+4zk}Q`|XbR^-0DBLFPxLlhnIFw%ZM|e{uOq`uoAXmwx1V z(&h)W`2lTyK${TAFwl-eSQdJTpqOf0U1{S zZGNPeq>qA~$$Or!N+%g#2W>t;n~zzV50L%<$a+DrGx?q8N%oUu`w?)&o$w0DengKU z^SfX(zZ>jK-v4|IWP2pr>j6hx?<*wpS1F$=j4?R!XJc2fl zipzqG8w6Qz2;^~;1KA&v{mFx@UjP|53^J}Hy)1nc>`eaVd6Ml^K-M8yrwXzT$#!cX z>rH^2$rqm|nTIbmSscl@0LZu?*qJ=~Jju8y$a*B>VxY|<$oAs$_k*3uDOHkrDd{Bh z2F!m_m875i6whBE>yfON1=$|SydkhNxv1*-J~3@%9qO!;S02f{Var=nB^kFBQ!@dIFI za^)eC@mcvv`iIOvaEPQoFF#5Du=#H~MABabZC*f|7m)3hK*o=Poyjj8A{k$mpQL}n z{2LCD^w&YwBU#U#r1=9G9|Sv-TMm(okIGNd-);WyA0p|G%TLnZZ~l=(B+pYM;}W3F z8))+eavTF-XR>sNWL#GIkm-*fB3Xx|KL@f7$vSzEbx5{940a};Jw!5(WL^ohc>@_Y z3U(%6Jw!5&WZW3Y!yvB{wt^$>FRzgFmyRLhDzI6HWSy$~B>fX$XYz^(&$N;4yMNI9fQ$=*oykv3 zkTx$M=Qj$nU6OI#^2b1%576cVwD|xT*AI3k*G`a}-<13${R8H|bHekxMz))Q&blP) zt^!BgxkpIW&mKe88G_xJyl;YJ{yLEJMKV5r3>iNRyED0Gg0%GsGH)w5;<86b=9P{i z^UARKc`yogCLf(3ZQX**uYk56K=ykK9C5pjkgQidhOAeEZJ#e-XA=7fWE~gv@d402 zr@_wTGZR6Oev<8mK(DSC7ChWeuB-sBFKJ_>_-V?9g=m*AnS~RoynW)WJ~gkM%!PoS*Hpzk7QmAWZndb z>)1NklFS>KN1J)B%jc2I3xLcEf}P0+>SRmuXW~91^QkjG0*<(Ouaa!P3uJyb*qJ;~ zCtH$-jm)FXydH4Gedg7Ei+iI^wj^6#An8wloEMVwk_K6K0PIYj@B+!WLFq%L&wYWU zUIcAkLFSK|KmG#Ql3XfYAzm-uYP5Mp9P89Tn@7vv_`(Ee^Cy4s6!xd^0@;%MvC-xS zHuEDO&);33%?sF>-1kB^X!8Lwt_NgX92{}i{gmW<_Jf_tr(Pf#Pcl9M+WdeV-vHQ| zJoEy|IFfN$ko$EIWcx#4XY%zI$d+W&izMSo#^*rRC0REQGQR*ae;CC4zewUo@#5J= z)}hWiC6IY#ka?qEXY#@qNyd?ktI0oM{>xt^ahw?Guft}4NcP8d`?^7}Gx_Nk$(H18 zM#e{BkGRR7lAOP8i~G`xWJ~fJMz&9z@iCC~N!ITHdA=o?9|t*(rKZ(# z$U0rpyFs?YzlTXbNq<`YEI8tB{~5_~4ujS&(E0^hzd-h@D%L=@TL&3OGVUEr6_B7Aqj@k&Lf`98XPt*Q5S`)*snjvSXn2 z2V{Pq^nQ@zPJyhKmYx9_Pcl9Wj<}wmlkDFh$aeA|^9r&{vdgk7p!FNHe#>8z-<_s@ zgRB<<8Ba1k0`jJ4&1%rD}Ts?Bkt@H$+#kD{Q#{WAjdHZa^9=5CuG+_ z#*>V9^L%_%>;{?F1KQ`S^nU3HkohF@Q}U-l&hG%o{6X16An#*xAoED(733cS`TdG2 zIO4XKNSi$o*FZnMbm}HIV&qXLy~Y9ssF_K-M8yCj#!?aNrM7 zkabAL$7PeW`#>9?^px}gkmJaJHcrsS39?=mWd0DyxV&_ddI4nJVfl+7>yWHd0$GP- zd>Lf?D9CzM`APa~@=t*Fy()0`hRHv;Gc_L|<3ga#1ITuw@{{y;fovx(ouu9;y&q)# z1jsrh>nsKBa~Nd5Qy}xwAnUD?KPx{;e_l38dl(#X*E~@KZ9YJo576cVWZWod=K<+e z=@a0acYgZCI>>yI`S`DCEuUn55ajV2l}=Lc2Kn4NE}f*F0ByV=>!su;>Ceh0X%B&K z-nr?e9LPM9d3liIAQ?9dzIo?;FKq>PZ#dzPCHYDEtFlSj6X2V7?tZBb+W0^l-@7$F zka0oq%{zbdQdBxgz1#HKOEHl7B=h4S`$aOYAH;e4C33Ty_i_s4eoTu4rZu;x`XhZS$n$Us;CqGGlLH?~EpVyRS*Tg!= z{*a6hEb{fbK_163kbaW>A&}p5@L}Hv%?Sf$xg{m%N{U$^UGQ3IgstI1KDog^shWz09k)nESdga50_<+ zidECmPuUY@Kl5@OWL>w!k0SuGUeN4kUXDudmL3BcPjVg-;A3D>I!S#LWSxrqHQ5tl z@O3QiS^#aKDiXiKftXl$Y-ayu&&G<6N_zL(KSOpnJ zGLB>%{)mR@B=x9ll6DMadnDV7%TLmu09ijJoup2(epWh3ouoblvVS>{^-0#xgX|~C z_+ik-4YHk*{3QJ(>y3goUXb<1K+ba&v~h!sr_J~Yknwep@g&=K7ivC0#?xke0Azen z41w%V6l8sp@g(EBK*o2AF_7)VLB^AeCmG)dGQM9-fs7lFos~T#I|tglf$aA>kn4-& zxbqmSJad64^KE6DjQ z$sPqc4^`O{vfaf#J_y=8$?lfj1F}w^?0zvV4v2%|5Xk5LIgtITNw3QeEYyfNil3o@^#R|y!RoRC@?hlgV zcmL$;2gDG_x+LpHrFV%jkoDrS6CmSLAfI<;WRuL#fs9`VvfTp6@eG4}e^LaQUzT1I zgO~WY5NQ1YSuY`*q@4y?Z$Qk7gJNDRh{GWFV-aLsl66Y*m&GxV{jJKL5QEFqFVOl0 zGQV4TABgAu2l{0Xh=XDdWFE=9g7jgrEY`%(`_vA|_z1{;4S}{U#9?t%90Peje^_+y z_s2sBWcv}2-wWvmS*Kr2fjrIzWM@Fe56K=Di_%H{;($0L=0NsuSoWwmA=c#&uJG-5i!spV8Dzf`psgqQ2gM<=2r`~zd|CRaSOJ+| zlRY7ZF4z2lHh&=ZdkkcJzw89a`UA2vvPtF*NzZ}I8W>UOLJ1 zVo5ehy8^Nv$@r@LB>gU_>(66IJqDY3B=h3(lk}%#leDw4N!mG(`K0wz{=EDp*(Bqu zvPs(R!@geuko!3VvL4BLQTe;%kIN>R-zPmKour2*a8{~e-gN!SH z>`zHLNxdw+DxIWWlkTqZbx7&~kaeQcN$OqFWC%1_dtmrc?xfNZBE zy)3&bo3#E(uY;^lvc5}eenG|sK-P;&C#lC}leGIl#w9?TZ_wr&wDSnaxU6iFc3w6~ zyCk~|vR(ybJ(BgR^4H{dA5nin=0|0dv|}LiN#@7pC+Y74*-lD2Nj)t+E1jf1C_OKo zq+XC-1lbH(1PA&_-R){TO!OERttWL#W2Nxe^c zN;*kBEj=rpq&_G;2eLhq?d3tXM>4Jevb~aYl6qNsRXRz%CcO@_F3Gwsqw#`_3xKQ} zl}=Lck{*{%Qty+Vl1@@jOV5C8k7RpUkmDd3Hwd!5ymXR!L3#ybKFR!=^uTpKuS@I` z6CmSB#;2tZiUqLtN8m0c3uYVVJVT_EG)vioGGWT$0kWe>{E%Pz<+$u7$t1Nr@#s`NU@ zenxKe*Xezr%?oJjTy_Rz9Le#l0(o7Z19?512N_=gnZH&3vh1q-HQ9&dcmM43LLlpt ztRDecKPrC=WIJ)$OXW|=&WeK|+s}clN80|AzX-BUNp>A%TF<+2C7q<6mYxBv-=Osy zw0Q#=Hwd!*ymXR!Nj6ElDx0M3KBaMhv_qiHBWUv|e^masY?ARQ*(B{W$bMv{lhg;L z=cSX>3(|`q+a=j<3FP=l##LpLwB4uGZ;*BXWV=!6B=s)oap@%WKItjxB=xlPtaOrk zUN%X)1oH2wk=9S?Rq3RyBk47e{c~%49!WpRdI8Y-FMm{ilKw9FV48v(n;!R=~?L{^+D-*=_K`n z^pbRvdRcl^I!V1I-F-&=2B`-?_A>(7_iyEo%HJh_Tsq0TKItjxB=xlPtaOrkUN%X) zB%7pN2HB6Qbdq{ay1PaF2B`-?TNl!!(z~R`rIUw%=6mrhbAsTV-D zw-x03@Dgb29Aq4A#+5?@tMw1kPn-S#XycSWDnCho zT=r6s?Q(;)M*vPs4dO3zCtsTZV|q?6Rk(yP)*>NV-^R`nO89ssSs(xcM5q{pR` zj8DlXX=i1VwDYn_+9lZ}?J~&rs?tg7HR79+yrszE65eI!Qe( zJu980J}5meouponUXo5yFH5gVC#k!CRlh;n0nqv_Ju1CRdK~2XBDsD@=Jm;+lAolX zq(3cxR(_IxlKw&Y^YWAQlk^wlFUe2RPtsqOzbZdTKS{q^>+Pr*KZf-8!REM^f_7gd ze+r~OEq_)zNqtayUOGv=AiX4=q+XU@l}=KxNq4vTev;G!pzROoQR#8nB;!)DN!nT2 zB<;Lxl6FZpNxLeWr0qVZet@*2vPs%;*(B|hY?AgWkn@<8PEyZ-Jb$c{KQBK?|5oWG z=_K_EXutoEUX@;#?mn;c8p!=ln|UFSc~SXE`bqj@^2g;T=_lz=$e)s*q@SceBY#$Y zl75o@ocwwDN%~3pOR}qC9b|u9*2j^Ii^?Wx$3Vu#rIXZCvPs%m*(B{8$h^FCl6pxt zNxK3vt}30R?grH_kah^P>s8RMSLKh&9|P?^M|xa(AINo`0NGATev)<5@@J)!)YpN0 z51W@xQZIsb{R*-lTS3N^K+ZSGxH8CgDL*A$Dx0Jo1DO|>PEt?FCTV9t#$~0G)bp}Q+C`A_ zKyn^R@{{yeK(2$Tbdq`6uy+25%A zB>g1)F_7)VrKiL+$Z=#qwnMU=to$VNb0F*IrIXZ)AnTT-lhn%~>sCP4C0Vx$+W0`m z)j-C%J2W1UdH|#z0$D#QKS_TKWL=VV%)$xA1x7eTf| zvYnFrB>iQO?Np_c)N9h+I*kjY9sn61l}=KRfwq67$EBxalZ?yCCTZtole7yU>lZ=W zFY=e)(e5QALNh99|!GxDxEg-QqoE8Z<2Z%WW5Z?dRfqp zFOYGx88-+rE-ybxKS_T<{*wG8{UrTm`70pXse){WWE{!38pw9KzTz1J86OAj?{R>P z?~{L({8{tgyoaPeCw(2r>&lY(Z~qxdzgy3GcRxhZ4uOp80@;2{b{ypIuSv#bK$|Di zx0kZgbJ7bS^NX^}vMaKyvTLIIs*ewdA&~W>vb)5%m=ZG}kAtl2oNSWEMMXAAJNh+_ zmjw1%z@e0yklugnugB(W%yw=UCtwfC&VjGMF32u| ze}Y{Cx!>y`fb366c3E~+c1?C2;wncYA*qNPnN076-+^ zH@rUtvR;?$J~1uk$tzY8wQu8Dz7 z-k$-vZgU`yqndR0Eq|N`K#sFZ>=RS+r)3w!vRD%Xn|*$tm=*`cf>;)-;E4O&7|Hcs zlkT=q|JfKxJpkJLi)FDU2EOh6?mNu;+ZcJ8!}S=*{HS!2I!QeZvhJXm2boVYj%1ws zuKzxHRE&!$F)QZ9l2{d8Uio5NOo>@Be+)-l{88F$za+gXx`OJ7aWMgM|E6ST#k^P& z%OJ;Hm0gqV{>|47fb>UYcgc>+?vtI8otB-Iofk`DRYXzyUVl`Ki+v#5OUX{l&dMH? zoddb1F9v*{xc9~kmJb9F32v)F3YZf ztWR2hsx_y3*rfLVl9|l=L(>;?^I?%Fc^L(B>Cpd`Ws$tjkZ* z@BYL0BPw=*98Usd9g=Z5*(B|{Y?5}@eLgP+GLNL*Cp{;fq+XFt(yoDQH?~drAoVzC z`%}!wPtsqIUKT6zlU7%H;C^2x1loLq^hc$4iE*({Oo?eR12UgvepY&3EXq&PUy@!G z-2>_eX#D^g*CoAAOvq2tUzAPKu7aGGx^$Ad`%kY|K-MRz*Fm0V5)XQvq@Dq(7p0Tb zE7I%IL)+C~kp39Ryo_{`dQmn>JFr9J1#P?_^)BftF(W@oe^z=yEQ>X<4zeC;?Tq+# zy2L&)EoMN*lZ+pfUJ%P-O$_Yx^%5ZSNb8sMqI8ma;)jX@Y3F2#}hXX7dvjV<7uWGCnRnC1%CESQ4vZXpj02GCu~|aVb3oa(`rGlZ?ws&w-4u z$X}K2ex`W`ZQeoVMWx3;=EY^F#H^SDnMX3O2r|AdowWWwr168abFxX=b=f5C%+Gy1 zX@1#t*`<>2cU26P)qjxjG0^5mdgd6?pOe2L-R;#pfHn^xbXzhX4-miUoDKP`mPtu>2UKQ)|la~J*pPv^?V(4*S zhh$t7wDkzu{*j#kt-WK&_?+S@(nC+E9!P%-WSyLJl6p~kT{>y;zxDYskah}Wf3jju zev+Ma8(75;LHU2V{I!dR;n6J@h+`2c#VXIi7^{%rT@tCx1nH6&!J0 zkCFC#2>L(_3tSk7Xz(7vU9TQvPt?g zPy2Y1c3n1U^$w~YNV_PTwESn357Ms4CTY8I?FTUdavY@9lU-FP6j#$as?RRq3v(`eF=Z9Lc!2 z^rCc?_Tf>f$RtQe@T1ycp0m|@q1m@%$}J&hrRdgqqD(wJ`<8+uqBn_Cg+UW zDoK(gm5i?~Ns=T%6XYt+{6GbbUn1qvA5D*Vgq_l56X{b2ADk4k%-ZjW{Q zDk<02%Ebvtd{E+OTWQm&m||1nv=xEQC`kJIay@|d_x z>a}%!T*?#TmExp$leiM=^=j+oQc`|MtiCn-VTs*Xx7XI~BT`;Z92LjJadARif%Wp* zdikW3r^I|Ykv`vUoZb#jZ%4|b;u5LX*7Y$dkBbxH3Y^{^PH#`jQ{pPA*VgswJ2~&- zsJH~{^=PNJC*|c*uC2?fB-hq?@%LsqZJn1(uC4P*$+gq%e~|WA=Vg*>>pX#Ve@u!i zrCwXtr=(o{DCZHU&m-3L5h;&~%cNdg*H=ict@Dx-a@;swFL{OJB|k|$*7fC*YwNs9 za&4U#|18Ic)9ocMm%LJP?R5K-(jM!)Omc0VS4ys}^FvslAL|!6ew;pjtm`9E9u=2K zy|%8ekX&2mNvzkG61#tu^YdC4mzPvP|VA>~z4u6~pK6i3AM#3eZ0->_b9 zx#Ze9uaaC_=f$VwJmGYE$;&0Llw3RA{QbzUa9w$3Xh*VeiF4>@kE^8{X}-rugR z=NBunKF$iP_gh=HJ0#`qKV^BW%PS<;)_Dr2&y$o_NjYEsrOPAYsJH~D&kxqimrJg# z^90uGONy(cUR&1}pE1j8rnn@#kxEq*Gy{tE65#y?$k->q~I@ykT8lF1fbO zt0dRfd9h{MYwJ9Q*Qt&lXzS}n^U6dTm{=Jf=P(F2?Eei_`0qyj=21$+dNT#A}u>#_8p- zE{{riOk5`Q+PXe2Z{N^tu8VO?G> zxwg)$B-c(amm}9fT#WVd+PXd}kG^J#KkzhKAc{kl*hznQm>s} zpX8O2yK~L*+Pc0>a&4W*u|B^EafQ@t>w0&dERS_wBDuECDGt_%`4X)2 za>=!Ip2B+jRZ_04%T<9XFUINP$GSWw<#BPP)NAYd;zDVUbzUjCw$9x}ay(e)Ws+;_ zJb}~qzm!);qB%B5UemnWpWO3Jl$d2tOnA6Vz*l56X{QgZEd`%2^I?R0y|D~*TGLKok@BSEDY0rG$0be_n>;CwH8go#oDe6)DY0r~ z+Ld9w-`e{8m1F&0uu{t1jZM9_t}n*v_l8nlF69+cUfjgA*VgSzux?)=<=VPDh4t~e zo67oedi#=>OYUwa^;p+OadYdZ9Tifpo!(A!)2;-k*WXIF>-k}%joD5y*1xNYN?sy) zO!Bz6T*@oNC2h@eW#Ty2`<)QSI+#2zPIfYRN~}7YJR**YW8#!pohR+YQE^Nh7bnC? zaY|f;^?6oZWIf`jxCHC^Dskd`(=I7aiPZ(Nyg1QK+KE$Q6*c8Caa^3}F73rBvFai1 z#c^>$oD`>ens%zhI3kXUW8%1zUufFJ#R+jzoD!?vvOaNCT-?{3mlW35RrQm0;;1+# zjyv`JO}k{Namw)+Sx-#L$4Y*MaYP&y$HZ}QLYx$*#Og{}zRWl(PKcA@lvs_E_Ts2G zCXPGh*P3=Qv6>*uiKF6}SWT3A$Jd)YDvpWc;)FQqlut746XMtnCXb5~;-okwR+CM; zq&Ov3H=6Q@I4X{bzd+5GTbcr~W3hd_tTQr=0SsvftvA zSluk!6-UJhaZ;QTt7)dax-K%_*RoA#7S{V9KGGt$HZ}Q zLYx$*oP369pAyIJknM>R;-phPQ?@Toic?N`+|(z$u4$JPr^M&Rlj4+EJtXbKYMJEXs5mB$ zixc9cI3=#adLEKkZq}0&r^Mf_?rQ<94l;-okwR%=YVh&U>aiR0pOtmiYuYpwLZ zgD4S~iOa<)te@*u_^^JyKV$NkI4(|zlVbI(?1$s$Odb`d#OirzCyt8Mi&8F*ieuuq zI3bR#ll6;Z;Q&hvaa0@=$HfV8ybi-Zgnd92Y0V zv8|>)E>4J(;*?muC+ii*#ffdEJSk3z)%&Kr80-5hCAr!z>k-Gr2 zlj4*(w!rJTaV8rd(CoX;wrIwpD9ls)SoX0>{MTv~ff2RNRjI3-r!$$pEY;+Q!3qghW%9R1a_kBK9{ znLH|viR0pgI4Mqv)hV-_w*L2P5y`c69+g~M=P}9S;)FOUPC50zoBd6Q)t@Gho;Frz zj3eTtI3-qp>+AW*&PdurKZ;`g+=z+e;_`pYdxi>er8tF~Tbn*|D?9x@C5h9YCoSWM zI4X|0OnF?K%#ijTcDieuuqI3Z3tu4CG##Hz0Bhd3FLyq>IA923XI z331ZN8<_StInH%^LEVs(zR z7e~c0aa^1bC&ekJyo0RQaVL|f#L3P!&$-KYrNrtylSjl+aZDT+C&Wpy>cV}X-y4fl z_~Fo}yVUu{5ph%;6UW7g3rv62*6Y#M`<0Y(ZC$RtPF3wnNx63V?*gRDulQJXHS5vV z<=X31>f?x%YwL3Db!znPsFZ8#a_x2Mv)wT%*Vg6Q{Qo3BiDNx3CB#W_N*wEE>f_=_ z)Z|fdOdJ;{#7S|ayR;X_#Bp(?ht!K>;<#A#H1!d2R2&m0#7S{VtV(1#aa0@=$HfV8 zQk)X2Ub4J6Do%)#V%1yPiDP1Qk(7&*;*>aXDc8Z;`-vJX?Zi=WOdJ;{#7S{VtcJ+) z;@B{gtKr5;amvX@nDUf3I>t8tu34PI>E~n2ID+-K8x_aIadASN6i2Vn$JJm@Jnb2K z5@~<5Ct0SSH;wkD((b-DHD0!Jt#NXKaY`Jy&g2PkQk)X2iKadxPKnj^raU&uSluYO zI5NfLQE^Nh7bnC?ab&7#AD<@ovp6YEiPbHpJ|d2aW8%0tAx?@@IDNjS%YNNzoV-on zpCk5a>))%SB-c*={^fR4AHzD2ORlYRHN&hYB35x*{k-Dn-bmUf_eRsU_r=oA*%wc{ z-o8ZIZT2P8K7U_omh9iZjN|3T?m4F4B(dKAggzRBa_gg7Zy z3-$5!-xn1pocum>p5u$m@(FQjv90vq6^K4y923XI39(ut_2RfVAx?@T51MvyaYCFF zr^L~vrd>ju6sN@MA=#cdDNc#iGE*NB$HghJdRXekQE?^KpNG_PIj`cVI3|vZ6Jqs< zv=>LkF>zd+5GTbcv3k_(Ph6ZxnDr&aDY059+Yy&NZl^!*C7zJ>;*?lbnDW?Dw#wuG zPn{5_#E~_oJSI*(V{-MZv==AEDY1Ia)JMe8mt;HQxHutBic?~>PL4wyf5qepu}Vt4 zI4X{bLkF>zd+!uolp&KO5=bF0>;v42b+ z7nfPC^mtY&PTH>Yaw&1#W%7hL;&Y|PwWv5DPKr}vm1){V#Bp&#oD`?T%5U1o#Bp&# zoD`?T6(LvpI#=TD9A}l}?ktlR<8(ieyiD?P$txtUl)NO@m3|JDi_5B;^^|oq<&|Rh zxw5_UUFpyFl^2+LcUR*Qak;pvyVUoPdU3h9O6=}w>Wi^{FI6IWndB9cS4!?Kk@i@( zFPFSR^5P3+dpKP$d6ncPy-j(Axbh;?-aXo!w_>c%Yl-A#;tFx4)K^Jfe7RY!TwFZH z`+It*}m zN^uoVAJ-(Q$GZPjic4-VdDRqS_f5vdV)q)!#T9RuerYL}QtCz9QXc#g_TzOp3%`u> z@p>G=uh>Ie!(9tq%Uwn8k?tApKi!Qox@DAPT#`|i@lwX;8Q*3EJT*O?J^ejHJo7z^ zJgYrxJ(Zq4o-aK4-um8_-frGoyyf0kyq|k*U&vS6*T*;8_n>dH?>pZ~U-Qh%GOx{? zl6hO^{LI%fQ<+)*e1B(uH-CwLu>X4ho&Nj%$NZUrT7e4#R|Fmj{1ylXZwSr^&JMmG zJQzG2JQn;pXobR|MxoZB-l379siAv9_lF(|Jr=46Z42!T?Fk(S9SR){{T9m1YM0eD z>+Y=6S+%l3g2$mx_bJZDbMQ#o66j^zB9Qy4xkJS2Q)czbwP_}g%CZeCvXy!LtH z^6tocAg>~CP2RhC-{t+2my=&Rzj6MB`B&y&n?EUkM*iabHTloxC-Z9;v@7UVaAU!Y zg1o}+g#!z(DZIOIY2oI=_Y3zG9xTi$s$bNps7KMDq8o~472RL-Skc=>JByAMb*R?0 z+K6gbRr^=9`PG(Jd!gF4YCl%1QN305>#8rVzM=Zz>Yf^THR{*6p~lo2Pt|y{Mw^-) zYhGJ(O3mptXVsiv^O2g*)~u}gam_pog{Ro%69 z*VWx$_p7>A#2X1liXv?z10%yD*F>g9?ugtUc{;KovN7^*WJlzO$S;wu^=_*7V!fU9 zKCkyxz2EEoU9V03^Xkv6zo7mT_1~}mQT@;A|6RYZLH!1;8+2|ksKJB=H#L~oU}b~# z4K_8{)8Nkr|1`)b&MeL?u2x*9xLfgn;!(xd6yI1pzxbizCyQSyexvxE;?u>|8a8cs zal=UsZ)rHM;lhR$4PS0}tYODxP9Z!jk`C#xbZEG zA8GtlbF%*_X}2&FeRhHt*ehVDnMU z%bHJZesA;Vo3C%ax%o%UPd5Lvx!oeSMVl6vx0ur6juwksENii;#jX~6TYTB#c#B_K z_*&L(*|=rfmh)QP*D}#^L(8o#54ZfMWk##~RyA5hS~Y6bx>es+b6P#v>djVLTYcTi z-MXlC!`A1vj20&x z4QaQr-B<0x?Hjdk)BgPSBiqkuKfnFb_KEiIw)dXX?3_E!`Td+u9Uktmx5LQ}nH?h? zn|AEjad5|*JI?KRZ^wr_zTEMnj;>C5ooaXL+i7U0ah)b~x~)@rr-hv!?6kkr>T_Q@ z_rSToom->XO%` zNtfoTj$iZ1!*_c;I4^N*fi{eoo|d~iYPf&pE}c3s=`<*v!D?|0qZ z^{cMOy8hnP)6L(ls9V!+UAnF9wz=CE-HvuU)2&Xlb@Za>i0F;cnb9Ys&qsfao{naB zU)6nM_Yb>&*1fpLIXy~yEbFnN$Fn_N?eSKRT|GYUaiqub9)I-6>e;Mkx1Oavujo0y z=dzw_d%oK9ou1oze$w+q&%b+CFKJrRuB3Cxh?46{rj*Pnxxb{MWNpctCGV7+D5=}) z)?Vek?(X$Mui6*3xbUJ2FT3#a3+G?B;=<&GA6~fk!XGbm^}e|G<-Hg7e!lm|y^r<| zUDW8Jb1%B&qHz~ZzG&V>k6rZKMPFa^-9@TTuuq3RBl_IXXK|kmeGc^btxwa7`&@kO z#Zxa{a`AhY?7rl)OTw2HUwY1^-7mfP(lM7_d+C#x?!2^a-{yTw`(D|1Qr`uAm-SuU z_x-*f_5HSQZoek|I`kXVudLs7{g(Gz*RQhQ{(e98%jlooziI#0{k!z<-hX8OvHd6X zpW1(M|5g3h_kXAVNBw{8f9`;r2h1Muz<`GbBnF%rFl=CK;B5mB4*YK5se$bWbs5xu z&~<~#2R%4w*Pz3LejOAn4VTt0J-@VPX`j;mrPr6)SJFeErs)n2y(&n-r zmrcHG_GR-f+j80Q%YM2nYiNz3Vf}{<8+P5WdBYOJ)(?Ag*n7i19QMVq z6T`BGM~0s_{G#E*hF>{+{O}ux-!gpZ@aKoGAO7L+&xZdoT#Xnr;)xN@jYy8zK4Q;^ z6C>7+JTo$LRQ*v+N3|Z+WmLaWqee{_b||xD8>}3D zmKRpjtz0$J%2RQxfS;Qcs@Ya`eqL0AukdTCV^%GmcZv2Y{apN|wf?J}N`2o_rJsu* z@UJ!X^YTB{f80+06-%YGTj5dsnu$=oH`7Yz@6Iy0Q$I%PUt~Lc5Kk|smrq@0DJB~K z<-U{6bNaCsX8TU=*eUN3H|?Bq>usgJWqr*#o?J_*7dk3c!}4&Re4M9D<^Vy?RfuEC zq9lisFvpuqX#pjLDqB^fv^u3VDXp#YR2@p|sUp>cn&ys($JU)nApV0cxBYsIF3j)ivreuF_C7RSi=&s}U-$Myhf( zTHUQKSBqKdL6&-mC6>|pU3InEs>ZAL)V1m(H9>u>u2Y|=iE6*Pp1(jii9awgSsi38 zKd5QyCv}T*ThmpBb*svTKP~53uK|uGTzN zV%^P;j_*;ISPRsp*1i0&c%d3#-KPdwi_~E2el^5etcF<+sNvQUHPTwDMq3Z5%dO>V zto4Yx!b0sjs9UU;)E(A3 zdfvn*jB3%A+YsJ2;2wbR<9KDORbhpo;0$e>ak zwcb_7t!?}uV7vO!`cR#)cB)^jkJR7R$I7yIE1&&|%C`5Y0(-BjX75wg?N3!rd%vn} zf2Jb#0oB0%Ts5)}^2Od4s)hZfYHg?ZQtpuIXdhPR+EskPbwr(Sf33RO->7c(x2lJI zTwQ2?#}^mht4r)3RA2jq>Tmy~O6{N3<@QMxvwu}(_9=Ch{kyux{!@*&PxF%bjJm`A zN5yTIHQRPuciI`&-L}V?Z+oqKZJ%|YooOw${ni6^z*=Spt%vO_Yq_0mt*~>fC+)Dc z+Rn9}vh%DpcD}XNF0h`l3$5qvBI_l)nzhcZZmqX#Sg+W%tXJ*Y)&{$w^}5}}ddF^V zZM9oiyX;ohCw3d_GrOa8!0u#yZl7lzw7Xbe+UHwe*%`w3@i4Sj}BGSuI^tt#+YldryHPf}!io2Fs_qrao7P?kg_qh_*V%Ou=1Fi~dsq0DWA=gvZ zqpmg9W3H#I6|S|`*1FbNFS%Z|UUqG; zUU9u{C0%b>n_Nlj9oHsnv+Et}eb-j&1J?)E4%cq$BiCN*W7ntFZr1_p6W8a~Ue`fu zpX&>2zbj>Z?)uvL()EpX$aTy*?E2RF$#vZN&Gn=8yX%B?#`TM3xr4Utu5P>CHSMsw zj-BVOYZtg9c9FZCUEO_-UEAH!uInzb>$&^e4cvq5hVD|kv3s!H)IG#*?jC8kbdR=M zyDzspxUaT5xyRd`-BaxI+&9_hyQkV+-P7!-d!F6Hy}<76zTfWSUTk0Ne!#xOy~MuM z{h-~~z0~gKe#q|cUSSV#C+tD)mG)rwm0W|ki|$t>TUzpA3Qd!Vt&JHKyopOoj_ zs?W?L+o$`h4{qWvS!% zHJ7DM;HC{M^&1|-{_6UcUCjBMdx53SkcUQ^yfyZ`pw!$il?vh%*CQ7vhFP=KPO+!cv2&*ZV&L>;1nR>;2cc-hXYq|5szZ-+Fzad(Cxo zJn^3YIX}Dn={qbnk>yXEW3E$~_>MUyZ`i^3-L>Ytwd1e2Ord=>{uPP7{ypC?`~7&( zQqw8F{d&{S-W8t|cZ*tTCiRZH>^JNCq@B4=^QhO?MXW9N||1$k})^c+_)?R1M*Hsa7{zl7v5TtyawBLY> zSWd71d#>+B@(!cT_U7}~EOdEh!uYL&#-%HaZ|Y^KEwsP0jmb}!o9%qcc%rY@?aVi~ zQ|}ya`3AE;KhHDu3-30bA=lM8Pwn=a_3f7N@_O;T2Tb|YE6j3l%63w+pE;~&7u$RD zDs$c{UpM)z$1Syo@>k{fTFp{QA9pvdr{2%bWyYROjH#55Xkw{DICjWvuS09&ZL%LH zR+#hCXNcL3CF9|GIX}~-pPg)L+ByC3C22Q@?dkLCj6(;nHtTUsHrv_1)%c|Jk0a9l zBDoKo`}nruX1NJGH;%HundRm<{;Qt;tBv%HsnuJ`v%?t5+Lx?U>R^Tt7DyZaunl=Y%gi#YH4ybdP!lD{PFo+l5H zJJ-2EUrXhYZ*Fgv?=Z$v)yeB#D96G0RG0kh168Nd|1=# zTQJV#&U&2feYE7iUsvb+IQ9SOxX(U6XCL>Aa{iq2I#-^{op|1y&v9)z*HXQ4Hpe~S z-;Uqe?smo(Lfp;AL>_qL2Dr+Gf<#4`*Xx+azFE{NzlKZ9oYSZ5F zPPxx?f7Q<)=ebkT$@I&!pG)5}FVp?qd2Tu5__^ zZwC1{F-y(H&VJm>{_FKN=XiCy?sDF0Txq4BJN~-H&h~VEFUxm(#GJ=-Fg8v$nGzCni|xX>w;= zJKJ|YYL4IOubW>n^I~Vb+j}4HAXr}iE3a2@ivv7=uyfpRePotzEbGzphj*!8c$>Lj zrtsX;=jU1K^>sd3&r%;yzl`(qF?P1=^v9)JlsZWHxBd9nL^y+fsn6>ZwJh}mxl{l9 zKW2SPDgXENKFfHe*IU1%S?;}SjnCfBXN&&({rJ>ma~x-n@8fov{_EVYdjEf6{ZBTq z)SvkMUKS_!|GPcses=CpXFPMpFXz5??&sUMU-fZ1_p9?9ah@|D$auG7irG(R+;YYv z=lnVMv2$NL^_};b>*CChI+N?; z>n-IIB=5}gF`&;MF2v4p1!Y`4^( zUuQke^3Hj3>YeB8D|^j(y;0^R`xwXcy#N2S-#GolX|L}iJ)S!Ksyh8h_tOT9llnZ| zG1gKo*k9d$I$>w|v#-zD{lvLWPCt47F0h*o0pJP|>`CLC2^yeRapE&E^5;y1DY44Q3a*x?x$9>sfeO;V(PPyZ=>t{4H?fZyl z&M?>KK5~7X{^@8{RqPp5x4$5kqyE1c_AN9M1)J~8w2(b7+y z_3it~toJVF;aAcBW{dUxq0gf;&&s^h9N%qMDK+_j=%>ze!+DPB{fW~~|6kAad3DBZ zXa4StTh6%e%r~9!{_Jted0sfr5$FDKo;S{X-kG;M%Sl07Up$&yCrAM^NX0j>-D|jP?6Q-Oib>o+`7{gPf=1 zjO#0~zF(ilEgv)6bLRDzo^PoaDc65R=q+jY9@fk6zVIgjKiBK=$Io%;^YYm!KF9Npz2=_w~`KcpH72_vl{?_$3 zQ}6U2r$0IUOZPwhzU#m(mTJawj`u!h=5hD)S6=mVpz~RI%d^Uz`H0>hJr8u2bJpXW z?+x@<{oZ&qZo~GRcFy|s=aO!eJD*GRdsY4U{q{SQ>O;Bn{?{pYKIgr#pE(Kj=ln~a zSJF@ZZ`(WTJ=Fos}fzTEIz-v5$&E;Ie^ z*^f*=*-*jzT*~$P#3@+6FVffbzuJMWd8 z_n8BmnfIAnCK~T*YFshGQuA4EKK*YI?!49X8>d`z1+_4@y!qL*92^?4E>knv~AY_r}$(k_SlNUvv=ya&EQ+WnvI$JxvOr|tZo z?ys|bXTRsldk5!zh10M495?;T`TXSE=O-%7@i=+oQzrjU3;M1&-q;Q4E^>Q&cB`qyo47{;2kd3_w(EM z2gc3qSbyI96zlg8NAS`vCU@RXIOFK!^~~qW*ZEwcpF`_-ukbVNhw`4~ADm5jh-Z3V zzR$_~H#_r~v*$f_Yx6$A8Q1i9UybEn;C^oWZ_5{dV!nU+yoWh2&i7Y(-qVhDZ}UFy zeC&)D|Jyj`v^(4XY5Z}AOBv5bd?MdN{%ZDTC+EG4?RCG= zN{@d|e|4^hbDq23XZp!+azBpdyiZ~|ectcD&hyS`?_8Jf51Q+u$Ip4R+wvEEN^eir z=UmUy7Up=I^H9ipJ^j5?E3tFm=Rzc;_=dK8^MF!n*zChmGUnvvYo1 zsMgc|3;O*VxB<@uJ)YDS*P3O%zwLUA_lMLw$KzZ#{XM3B&g<`wwe|PM+Bb;x_s2Td z-ydu1e%KHH#^)uSKhoID6NX=F^2UsZdR|gh%Tim}UWn(nZZ~m@vGcvI^Zl`Ny;mv)X8)b>-+7+v`N9s?_wsHt4(RKn&)c4h&3jO%-kBFT!Y9FU$XuzdC%Qa zj{ASho%g0=82|LR=ogpK|MmUj;kb^lUgx;Z&Yk1e^UdS5)AOL8|E>M}r!4h5c|OzB|8Kc-pU&ZU_4s}h<5C^=v9<)^l_QFyfp-){FE~b1av{e_?kdiyYjVPH5 z^{-qz-~kZWyqqU5Xmb169txz<)^7_hp)pmhNZS>0fk)g3Oedcp^-UhrkBH~ie{ z0}oo4z>aob*vak>FSQ54zIG|w?FZR6dx+jQ$o|+v_5MIx4Yr5FA@)dknLQc~wa36= z_E!oJfWB@uSdIkJ$@|S3p}O?1jWDq0K+PUPQbK+UiMrG4X0>t46LR zu(4|?Y~or5o4S_6X0AtJbJq$u-o29c*FsxOa6dtO9c2IAtKcg4YWSpk4P5PB3!id7 z3!ipB57)Y1gm1dn!A@~?F>0>o9&R!1^I#9u>O9nHul{s!9WSVoxm zTgboW&B!DE4%*7?DIm^(jQ^e@VlT9n&r_W^6EY5XY7+DB&WMAa+QcEqIN+&EoDF$~ zc{A^+Ol(||Y+@+|N)goU2QloUZmeos^4>d;m-Jk5z~Li)LRr#&SDAic}efw&YhVt6_c4}pvrp3cNWA-&Gig?Kn*#PD1|JQ6Zuc)AgfhV(;E zcj7US5yR7ycr2t(dV0YtJ-uO>rw<(GxrExQpslX<^d-Iq(qldSiLZt9SkFM>>mWVW zQ%Zb2q{n)O5Z?glv7VvCH$r->XE^aqkRI#N?>ldX^jObm;#(j+)-#6qR%ol+JY$J( zhqjvGxsvz}Xsel?al~#5ooJNJ+t8xo;k3>GZ(J%%!5yQ=ELKj1@Jr1LU_`%h^2mkw))kx znD{qnt5cpO#J@vZ{oz?k{3o>4Y0om^GtgFld6pCZ4Q=(0=TTzieU#Ypt{}D{{olJ1 zW_X`~x!zSU&%2u1d}ym$-ZjLvA+r(hTH?CURuS*B#Py)9>U*CjZUC8$cwZ!L2pO@x z>xi2`Mr`kT;%1N;h4)qB4$xNTdpE$S_YF$ALtFLmzD3*<+N#96k+>JM)rH#k-$)EaZOi9w5FF(v!UhiEoDVWbc>6w?KNb z_Ym=|klyP(One8V_j->I$05DfdzAQJklyP(MqCc*z24)*cS3rv_j}^IAidZ7Bk|pk z-s}B|_#Q~_^`0cY7t(vZzY^aE>Al`l#P>sbulEn)2Oz!Idz$z`NbmLjMf?z?_j>;! zei+hwy_QYyh4fyp3qIz}fGfOS$`jC5E4`V-k3)L0H$c1^^0f7a;2Li>B~L@1x!y4G zGtgGgdh>{%gSL9!TL5417E$sd+qI^Ax>-l=Y2EN{u6hod4zCOf_Ax{V2CB#i3vmjqz;^xp+Eqwin zTSDgZzJbK8p{?5ZN{QP-TXpsgAwCZ>WA_auJ|8ky_YEiR3Ynk#MiNIMb8_Ek;vUde zJ$++{OCWP{-&o=cp{;uRt|Yz)+NzIl9P!1_R+sp$CcYFh`}K_{?gx36`6dt#fXse< z6Nv{wTb24I5f6sUoqUstFN4fTeN*5B-&A;mZyKEJn@;VGkmrc+HsYJ0t?u&8Af5+p zb+>OO@qB2j`+T#A7eQOy@0(4$7&4Fb%^_X_naBF(5-)|!5`FWCpMvyT-+bbyA^q03 zfcP0`tG9d$iQk5{+UQ$EoP^9FeT#|Tfy^O&ONc9>tv>KACEfvTwcEE0e&SmWzw|vy zc?!~FeJhB+g3MTaD~Z2_JP~|P5Pt{hfxcD5KS6q+Z#D5rNKf;vA^rn0o@cHl_CQ;C zGoK~)K|bSTK2Pk2w#v?Y5r#9@!Q9OCurTvgYKtJVl*|pp)uF8#X1+n(2r?VVe2cgR zGhKkP#-+MSKkM1kYqrtA2w#!85(YzeAqj znVH0YLZ0B60pc@|CwOLv_;1MgkeN-a{Mp2oKTK>xTekAPw>|z&V|eY{Pl?Qp{)x14TuXN?=k!hiK{_dRrfb0 zt^s*>;crS@3)-r-zd3OoXsf#Zmc$XrnC5RyTpu#B`P&i~Lwc9LJ#iywtM>j5#OFZX zGx$3ZcZ7V7_ID;e7czqRyAYoTnOpiVAie?8yZqgVZ-k5q{_ey#L7u$+p72(GFG_BM zwz}Qln|KDa)gAsm#4{m1(|-x^EJ)Av_a&YU>6!li#B-pn?(`2No(mam{H4V6AU)PU zgm^xr$NGm7FMzhX*FT(iA!HQtk0f3M8HN0#i5EjgA^#ZSC6K48e=P9|$R{=bmBcF{ zb4C9+SmD1KuJVtEPx>do)&7a_DgPw+ntw9f;GY6t_fLgy_@}`){nO!F{@dW&{u%Iq ze)7z(L}hA@@k& zOX3-j@i}maxEwM*2M!b837Lxqju77knTrOF!g~Y9C|L;U?SbROiy*x{@ICQjNN*4P zNW26xk_UbwUJ7}46gWw|4D#+M@GJ3h$h)J!DdI;VcSqn4;uVm)BXAm41pcCA737Wx z{6oANaz_L#H*?E?%gx*pGPew55WfIz^0J&QO&4~{~?$$s{;viwIso z?1RiAg58Mykar-#?!?)UcOb!@#9_#cBG`*K4|10UdlOfK+-1QEvyS@06#T97*{ z*q1m0xtoIhiHjk3Q*a=0BgowpEG2FNxtoGRh?_y~rr=QG7LX@Ma5(WfkS9oRBymT` z6C^mA_*`hKuE8yW2Ra5?ct$XyeBlz0>5jtH(G-UgYK1y>Sphs?@?PY~~byhjbLBHjs^i3L}~ zJ;61U?1jw1f@_ICh0MW%&k}zId7=fMC;lArL<_!1`~_ro9b8A8g3PXi>xsXD%-Mpk z5?4XyY{3o0Uqjv*2Hzn52J$2dy+v$8W?7+)#BNCc4{aj$L%tmdZHB?n7D_^pJ0i4| zI2-b;32h@Tgxm$8?XX2?2PG{bpV2})iCaTHi-mR(pAY$*71~W)0{NU3+CzLHWG)@r zM|=^aPlomrUkvG!p##L1Li%LrAaOs)=d93|!~-CovqFc62SGk(g$@%BhV7NzAkT|XHt{OR^CA=`UJZF(gz|{j zK>Bv5fcPcIoGMgAya6(&3RNe512U%y)g*ok@`*20oA@2bC%#Z!;z~$w57i^y2I=jg z2E^MTy*<>Bcn4(s4>cy<4e8sVrts5Hb4vC@M*C1p;scP`TBtSgLC9<^)Ry>5$Y>vG zPka>eIWg3M_&dnw#84;VpCF$TL!F6FLf%w_x)A>gc~cR(fcO+-ZWiiBdzgw?1nrkvicBvAWw>{ONf1t`B+w8;vC4E@T~sC1(2se z)osxAmaX-kNk~N-q0OT&nnm{}Z((|(>5|4ts zf5@6dd>!QdcGhI#>!Gb~%$fr4%9;x2Wlf{}ZpbK|HJ$h#$S9q48}Yr6`A^mi;w6yz zPu5K0rH~OjYZmb`$cUXan|L{7G|rj>pURpG*JRCu&u7i2_65jyG+7H^W!6HtC2J9U zH)}DqTOsp}tR=)BKwIs|S_(hRS_XG!Er%avJqmYat$-hAt%OxsPrxHttKipJtKq4v zHLT%x$V@(KE&MaAAouvA;fsFnQ&yeRuE*e`n{ z9FV;U4$R&RM`mwo>=IkBtj_jSRXC~y+S@tgCS&&a>*}LKF>^(4< zy^r!ukXc#we&WrLbCP|4cnjp5WFI8n3b`w@za-uUxht~|!H=>J!`<0O;3wHf;hyYc zaDVo3_*wS%@Qdsp;g{Jz!BqB1cqsc<_;vOvcr^PD_+$2I_;dDO@MQKs@Rw}M!#T`$ zL6wsMtsF1(g04Go(j1-ITyeua=O8aobK?+oSxLKhK!#%z2GZ3y(xJW zGK%K(A>IHv=Q)=UZ-=&L6`-g9X1Hv=l z!0=2sC_D?6hG)aU;W=<{l-k z3F#ZT$B64d?zP(A?^9SZ+-?KDRcU zlv@|xm0ORN^B}!0w*m2dNUzInNW1{j>v9{z`*WMZ#ktMl1Gz2XL%FSCBDXCqS3>$# zZhPVtvPewaIk zHSC0Z2G1Q!ybm%f%e@l*lRFNoysKgVyzy{A-UN7g-b7lCf!xJ;li=9A$#7iW6nItM zRBEq=%zpEx5s!y_uaP&Mcmm}2HhH(fiFq?9xgK)<^JWs?0Qv4aZx*~SZ#G<C!!!>zJ;L~|a;m3K);5T`Ev!{+h z-sa^!N_-shHZN}l%+6m4bMl{nwewfO;{4UHRsI^-I)5$fnExz1FaLSiCI3a(Eq@)1 z=C6m{^IwG{^Ea^OQIJm%`EL+k4*3L;{}#L_ekQ-wYqh-vXEAZ-o!%Z-dM8 zx5G#Bcfd#Ucf!Z=cfq~+yII>l$TiB}L%bg{p5*T%J^-0H=kF&z2zid@A0Yk`@*K}U zNPGw~^U42`_z2{go_~n=C}dPAI1D`nN1(UhDD)K^gP8@#VX)wP7%KP?RxkJo)+jg$ zYZm+pYZaV=wF~}$bqY?yx&?p1NWnj_UV-J~92U6X#DWYsslW^GE6DWm-VAb26$Ieo zf)IS5Ae-_fkkPv!OuQ6wt_t#qmqE@|K>_h{$hj&gB7PKdt_rFXuYmN2f||rDA-$rY zHt`dX`>~)d@hZsuSWpkHD`)^;E@(*kddMf8g2wQjf~N4@g642*K}+~SL2J09pex$;UiA8f+|MifoTr`jP2FNU{Xg=|ckTuw-l{}TZ^86JBwDqT}7+mr$uYv zXGLq_mqpLQRMGSBP|=I_wYP|CL!NilHo`{L zHo?Z#HpAxCw!jwEw!(JRw!!w*w!`zP?SNgX?S#Fm?Sj3l?S_|D+XMSm+XqXl?T16E z9q?VCUhtjgxVf=UYQ3p$E_k!xO?6AbEAZBW*Wg_RZ^J}Evfw?HD*Ue2hbp%y-ta?JSahP+P8B8o zNDWAHaM5?QKIRI>8-Ai*C;mjeNt-?DW8yvP6XJd91pHLl)lSsvHI~-mCdtts?8bS|{LxwZ5xW&3Xzpv4+(i%U?DfQF|!7ruLQa+S=pbb+xaC z*Vi5oZ>T*%HMMT3JrUkY%jVY0X;#*rq*_>C5Vx{&>P&;Vb%v^TR<4 zM^j2$%9pm^S5lxnQl6!>lt;h+IcH|>+`V^|eBbAv?`r0pGw+!*XU?3N`8lw-b8}F_>_6E3r6MG}vzlpsG?%&4lg!{L#yW##_ z>@9HrF7}6TuX6tiF|2a`dfNzo|9;yje*baX0sQ{&Z7KYIYuiEm{`0m;-0wR4vR7~J za4*{4>2$d3w~yfWlI_>xcjNX0_`Pg<3cr_cKZ@Ti+b3ZIy%UsOZW}1O+zwE7xm}>_ za(h78YNPz*gO3z}DPX0$X!W09$jX5Vq!?1h(d0 z&)7oCt#B7xCY{snji5a3o(1J;_vV&&;`h~{Jnh~F%G2&^TJFQ|>p=M$_fJ~BeA#Q= z&*S%X?icaB>&$4tL3wBlul*<-75_;>rW~U3Fy&zpJl&2*2lE zISE_p*Magr_w}H>&way{@5JvLL3yA1CQ#nz-g)JH_`MsH_q%@x%KP27gYtg&U7)<* zy&shKyAOi$e)m0~yx)B2|CDNsJ> z{@ImRZ2pY9e`m`16L$)~pL44_Z^7>=cAwcf0{4wOJMnvV=K<$Q_cd@o>Anu|C*3!I z@=5oN41W{oKkwcR?C0IL0Q-6O?ZAHC{bOK1@7@dSQ||r1KIJ|L>{IT0cfJq54+Hy@ z`v_w{u=D+Je{km{Zj0{3$%8@M|6Ful<=o-C*ZGk1Dd#EYe>i`G`D%-|lnnFWld`D;AxN+8rgt^{MbqCleY5EYO{*6lUHrPm?_d0l#haE~zGUl?<4dNO%q_Wp z$uE|ySbAjX*`@8vu32_sS#8<-mVJ2HCCmSK`J>BWd9u89#qf%ISA1~AzpW^&e8b9n zR(@vXU$6X!mET$Uqm_$Ry>!(duKM7rCs+N|s%7U~bWZ0vyU)4(oKKvycJJ zi=KPY%g(Qz|IYKDJpc9!{^)||F8KEgman~b?TNKtT>Fi+KVAFZYxlf(`ocfEaO1kI z>&Dk**Ok}3YTX;w{r$Ri7wx;~x{F?P@urKHuD@`7=lTz?|MdF5U;n-J7j0Y3pS(m;L0jpS|>D zmp^^^-(CJsmw*5ApIyFW^P0^)o8z0)n{V3uj?I6$`J0=+wfQAmHf?#`mOt9^z?Mh0 zJhSDOTQ1-FsjbcxFTUc^D>|+iyCQeR8?U(cirbsN*!*~6bg+e^1?-}cD1 z&usf2+g`E#54Oj5?A?*tQP}a!jz?NP+VXELzioN%m4AKZKV13VouA%$P3xZ4RO``J zul0`Bx3<2o_374UTc2y)(bnB|N84N5-rM%cwts5-aoc~k^|cSTzpDL%?SIk!zuJG? z{@?BAb*$?c={VMr>nL=b>Uc-TyE{J8@l?l4Ixp+Ybk1}>**Vaa?s~B6%UwU|`c;?H zv!Gj`3A_}=*O_zm%U;}`cO z20lLUodGv-ej=5~CqA3_X5!n4pClG1&r9|suSwpX{ABVw$u)zQ4xSpkdGH;B4-I~C z@Rx&&_iW!2-*d~J|FviP(1D>_hu$#sz|bQ@e?4^B-mCT=-TV07=k~h$R_`0%cXr=< z_I+#Lf9`wB@H>ZpJG^4#!jZf79~ixN^x4tpM$a9)bgX48J60ZhV(iOfe>L`_u@@b< z_`u}{+7BcTY#6^{yf%K*_#4LWAOF<&qSTSpf2J;&cxd9g6aO*s-xF6HY(03@!Ty88 z2d_KWdFb?^#}0k^&@+er`OxI#YbWoReCy;pCqFp(oymWlTygk(RqUXOG@?^ueP~9{tCoKRo*CV-Fqs+_7&Q zd-mAz>!z+NUU%xcKe+DR>&`oV(ealaU*EaPd3f|Ua5V-cntg-_JT1;k($q%~_9c z1HMb}U5albzD@Wp!}n5rm*d-vZwtPyIKy`ZzGnB0&NlZ=&dc08@t(t5ogMDmoEG=( zc-P_W&Q5%-?jJjC?!9>9;a;o&?sYod2O-}-h*OY{;Jt^(oL=|C&Qbe)t&Pe)za^4ZgVhNxT8^S*PE9${BF~+DYJTi6q{N7{nV9d+-j#5Z-^->;4vR zLo~&P@rJ_)zWwgyu~D}keCh*}l|JWgXllTtfyB2RY9Km-K-!XSb z>^gkM@rFa%?Toz=U&eh!?1XzwEbGQ&Ikzw7x&5&zcOW*6_Zv>)%j3Hq-weJ2zFB-l zcPLhJ_r~V%-GHx*uYz|Su$qX~+=EmdyRW4_FDHTym#?9-n)1__EvmhY>i;v*_i;u+a z#rID4W3hMPyU+c2?0$R?;Cs;hMC{$}Q?d8Be;Rwp{W9Lj_%hze_zS#|@h!ZO@$J|n z_#Vag0ep|)`yjp#;rlSY$K4;{-HadM-Hac_K8Ek(_&$N}lkPhAQ}{j&x%o5hb?#@~ zY4=a?J%R6Y?hIt-8Ta$}o^l_=goe}4&flt8#Dx1X z+~Gj~CQYsm8@g)^?5IiOsL9na6U#9Z%XNnCIzyK>u(Ziv+T<@|uo;8R7;M($#WSvX zldD%5*G(ptn@qa57}zZacB_HiYErw^q;|W(-fpnBD{K>1z`9jmYh1r)T<d8cvR zXX3lh`MmrC6n%#OuAn&*smDuR}A*gO%A?lT>oTp@T_rt+r;v1 zlkRs7?7If`Jp=omN$qjNLE}F*;EA(%l!s3piMSA>>EYf3o)WAj!?0|tCU>LRUfkk>urwle_uqlI` zGwrU)H!DGT6tI3lmT~=Hk>&@_8P`t?_PTuqK@5*Y*5&2K#p=#J?EV_l@g^ChR4Pb@o$zD+Y^ox`&MGm~x%#TxVd%4J>P5)y2Aos*81hIcs2N4eVwEyV<~AZD6l9 zu#cOVKWSWFTC986SB&e=7wf+E=Zke;`>KI`)xe%Mu%{VD{qO0;y8nI6V83RtUo+U) z5?wEgjO)B5IxpuN*V-jIFKd_Ryj*Bt7aG_)16#*1%FDVXIxiO+?8OFqvB6$za&XkR zW=sxdjjLp0DVcO{Ft8g8tYTmllN!##E6Jl~ur-6N8SH73gL&ineUpPfFs?gHEO(f6 z-)vxSHn6)4>@JhqT_&}A4E7#_y~kkRYI5*4<9eUT!TXKtQ4`CfCf&yj>@frTkb!;3 zr1l|`+T#ZMxWPVdupc!!__%R>$>iWG#`WhWmOnS?e$~LfYG6+r*wZGpr%h^KGuW>g z?AHwT>m~<(V_e@hIry$|eb2=5J(KPa4D1I6_MCw|XHt94r1m3&{gJ``$Y6hBa_}?b ziY?XSXpwO(UaH5@;-z{VEj6&E2DaS5mNSgT(ekCb@2)i1l?J=gV1KYobEzL0*H4z| zasD61^(*6Ax?JaUxpA#ru5-F_xz6c126m2ttue4Q45OT`S*~+>p241Hu;&@Txno=<9fijzOh<|y>E@Unw$re3va0z*Sjy! zbnjQLCg(8&d)wN3lvK6vA|1;?<-)C78+6#jhUaiIEJ-zq4Nt!lfAH@M8}v-_g$=rm zo@E!&JL)3zVrueB7Iei zt7crMjq8cc_u;J&(qrDbMW=DQa-nx_J&JlE{PL|yuAwHUwpG);%D8Sau3L=jkCe-C zes+bfzh4>GqGo};#M#>1_K#FQc&F63b|@Ea-EXEIOaF%0MR^%&)_r%Mf$d`$_0xUL zx}RQa!X7nrM@`u44D31+_Bs=G#)O?Ubh9RG$-qh`Y{`VZ$%MVd(A{Ff-fCdCny|N; zux~bD?=p0EnXva5*gYofJtph}ChWTn-MdZLhYai?6ZRn!HnvT-QRPZ<{czFJrd3V! zt!#P^-0xYmvgwD5)--(p?hnAds%cHrkKyjyu(atJXHU~VI7{JQ)AU!seV=Jp!oL#u zrp0|5RyJMZu4(GScL~0Y_%_8pw`5c7cS}wzt}NXYdlcW-@%_irvs-s8yT19VWrv&Z zUY2bB^s@iF;t9ByHXUg`XZhjgk1Rj6WKGiXG`AVe!m&?CT`Camn^^xW!YYsQRc+IBR+t)nm{>_@};XaG+Nb^1C7Mcgn zyS{n!yh8J;^Y=9W^96gF&t02rzHsfH=F8Xq^M=1%dlv3O^Q&H5Y`*QqH{~npa(PxVht^B)&b(zkku+u0D40vE~yO zZ;Jil#fO`pSoYIPV(XFCdYlJak8@z_A8$Io{zl}#Z$oVTpKkc&`a7FHx#3-FZo8y! z!%HvS6dS{L>e9o_cV3#r_a=OMo49zR#*3A!J@Ukt3n~!h#=_Rk;@{DuWmPeb8Z+Q&g+9k2|kX*Mw zQr+@+)Axb<-4^t>t$UiE+xqYYOcWXWJ$&dh6!bE?wGm7HztA$^BQ}v-GQ1o^5{F&PSK#cYb{-)d%&}+15?5Z{l0r z{;Svx?R^_=X#djFLX`FroK5&V68#Y4O2F8%E8XPlW;n_{oL=J6GU zYerVy8Q;fjxlrZTQ$q_!DQhK61t2im~LWOK%ul z=cf0pL!T`+e{N3!^|W@$6U$~-J%P6U=+NQj^q!wyvJ!oM{ob`pa(magIsEXtFGC%cFFL*Csxhu`_igA_dShxjy3=3z6;$S z?|a5sGCa6qDavrq$ZcD`IC6dS7xDL+mA7qqV%cq5V(VYc?ln!XMLixvUarUZ@7pjr z*0paH>G%PRwWcb*vlx3fqwa4;Ke`#^ z!+2bMGx*7-*o(#=ZMu8>LidB?&p2Nme|*JbJ;$1Vo^qSlG;PDzyLwHNv+eG2T(N|9 zdEnq4lxdy&H;0ZiFPpq$bz<^utM}u3<>Y0{D@z|={fWuPSO03VZ^O{x`_~-0{77^2 zwNp)>UUs&*@7g5zQ{RTlQuL3(z70P-vTW;#W6wBmIaa>%H+#!hK7q2_gMFf3!0PT7 zOCH1bA$*VH`#4~q#FvbHCpL&Tk@w)u-o0>-;v0j10{)Y+Yn?p4>+#LtD*#u*-?`W? zaEI29oE!1I3f}{O(`@Oa)2V8vn$O0|<;?t0F<+gSpYu}r8@;PrcRIUTve{~>y!%8t z-PM~0pfNR`$Y@I>d)oUt+S^+@l0E$cJKI}(cP0{v_MM6T{^ZV%o`HCKcXw}VTYGo1 zt-HUgE#BGPn`~=O#QPJy$$@Spx4SouRMK!wmh)AQ(iQJSDOD}!i_<=2cQ&0K$XDhH znfd-grcx0)ilB`nNET|9lcUA{QZbjW=1WBiDVX|@(a?5|h2raG*Fb5gc&aqRc@ju{ zJUu2vFT2LQf|sdy{h91ZFNb^-y{yiN5K!by*`h0%eW}cpH|TLYR4CUb+Sb-!&9JvV z7ed7K!1!senvU11CFG`*$#E?(oa(Mr;o`J0z^-BiDQAk6sZx2CLbXSx77gtbT53$n zacZuRuf~hHiE@5+0##V#VnxR12W$(LmA#>|3Y6NMUHgYi(=Dj!sr+=y5Zu$~G2*S2 z(Z@^0M8TW&iq#gXl>U?XLayvd$Kc?8XP4;elT%RY5=?K`m_X`7C@5u+iZfg)&D7=& zWeWLRGGFle%O2-yB0uXLtY*1whzyOtr&Ou#&&*2m5Uf7t)^>s(o-Lq!r@V4?qNK{k zp{CPmj@*+`(^o@Lz4BQJWO`c%$3b1ClU-wF?j!L^#hX1*n5X;*qCW9%CijPEuZf5q z&tFWTuN%Q8lGY9?o5`klxkodC8jq@vN?MsHO=haulU#R| znCl8^l56c$%{^8-QOLurr!Lgf}HH7>jCYzd@3M288{#jgI7UUueSu~zYN(n8XtLRFVb z2~i(ow~4WbUEGT(%i^VaVR!`{R96B6#;Bt3gAQBu%7hv%gA3GncryjpgA7(RpuMtR zB}`JEn@C_=H`OZTq=Q{U#R_`Vh*zm(raixZ4Hc`U#Oz#kejv|tQl`wKUBYlVIJ8~K zT_)ykcJ&u9d-z>lfE1Lm!4gZsOo=5tHAlRhJ()k{^<$ze%J`I2>Y77YqmQgh~FKt6SVI(t$vC56lHC~rv6K!iRp^0U2@nz;? zSbYYCl4`Jx@u`{o+`(csU!X(;R3Ah^5u}5I40=Tm6PWQRMP~?Tt!46=Wo^jx>i8J|16+B6G0K;J=YD9v3NMjTVYP6;l zx26t|ubwpAJ4|V##xRkNW#+Z)17evNhfz&^rCKpJ;#E(UST3T7%B9%=VBDKVM!hl` zUc|@%HgP8F&5>L&Sj&`k96CtKE1$||d59zCVF+J{1d@poMJOpf(~f(UQmt%gxqovZ zCQd>`$dN!uodD73$f;d(#B3ED6^L98%oj7W`Rveiu~gQW$xObQER``CmcR=X`9O(> zukxAkgaptwqgsMJYM@OvLcpma30GxuX7&k(@75#uWm8bb$mK9V?TCViXS4kidfq%bOJzXl#q%8Rzb+^v{9a~9-eqC5}5rJTuPjLl_=xsnJ0CWhJ4DT{3* zKp(nzaohvLsIbri5Cp-jm-BLcJSzY&UMte@J6SFjOSOuKh5%EGjeAv@JjhSAV45q8 zl{U6QKvLT2^q0_pT+7@fh{s~XB*~V*1yu{3rObG9kehb{BP+7~-kB=Ft$vZB;vf{d z#(bC%^@aw_)C$#pR8T$#Rv<%@*w9#}da|-Rhq(>JqVC01jIqO z8VZm^RX1l!2&xGV8k`M70w5xIJ^?T)4U@g@`T{{%qX0;r9l_*7(pW^?kc(6V?05k} zkRpc^0~a-XK;8i?AZ7&o5FK=AJ@(D4Z{~7PJb$kR5pkWsgaeqx8Gvx zm`jyU6;=60%e1)D<<}%PVA53dTC$;~Rb?iA8Zw8%q_SAklH^kbm)?&l#>;U%kyzgrnGX;kc(zuCDyMp&=G8dXDntv!PPxG!rXDV3GX;1sEtat!!rTpyOpYW- zO=x8oO9DEOn(;&k01(xrCoA%eLpmER7O*a`pi-0h3MarxQ#M3!{azI?gXk9DlK#mFOUP7kGg{!rm;D z7P&o{%1J@8COG9ylctPPpbmq-e(xcmF1bds0s#nVV%4A&sx+O1EK(}Z!!wI+*XmSJ z+pP|!{#NHyrqJpXyi*?j5YHf)uGN9RSRE=(m1q!kr_-m)n1-GH)aAQ&_oUMWYR5{e zQ>kXkknRy5>s!#+@$xhVXtBzXE0^CgEL>2GvuUW0iX_K~njP|&S#DdpEkcI}81dtFLOwquV=|`iqyP)edn#hgdvHb0dx`?H z99(ttp2A_if~(;Sr>ThO`DQAjt>b(gIhCfzM6mFR8gT@si+~@~1^oG2l5bwsrRZV>ei$@x=FM~ z>gY<*LJV;AlMFx+GfJEA?>1+oT;oN=E78SjSjXV6;y`T}j;urmXrDLFbL?0qUxwFL z2(R(h$}ozRj_xQXc+o zJp9{e__xvUZon=k@+JZ zKD1YSZZ0+FWodm#O{d#m#Q%0@z{{d@jhCve?M|Y3BRqg zt*s~C+m>kS>FaInX-o7Ew0CrLb|iXwdRtq&6Kw-MeVwg4yOW*mk{%YqqzC}_rKLt7 zy{`6!_>R-r(V1-TZcps&@9gW?+1t_H-x|kaq^rNJbLY-@SA1t{PrSc1nb;ZcNG5w) z+xmOD`+AZcT^;?siT3tBq)+3oEiD-dO7#i}5gV?BSdAhCvw*81v(QvT^nA=h(e@bH zh4})=1AHOi2Va06TYh zcyE8azptmGy|cF?-j`@gbhReByZRITU7Z~r&X|{(8H4s1nzC6iLfRVc0#p(X!a#W_ zU#>!U3BdQ4kUK<>nuquY{hA#Of=oh9f)N4X1M$j~$_`Aa_{;qkJr1shJx)^*(ew2< zMcZR&7w&N&5A?WzA3Y9!nnEB%K($AGj=BqgP=w5ilV$P_&A@@uJgvjo*)h;N(ACkN z=!~~@^|o~k^!N7klLDc;wPR;b+dzA7=Rkj7Yj=Ml(c9JCG0>UlOD6hTI|p`xuC1@r zNw)TOboLK)^|$sWI-#ZLZ|(2y0dq(sp_ypyX>IN5-Ps-Q=#RH1lKmY!vEe?@(G%~3 zVxl`fknHbtMg}@f4a3#2hBZ|hj_0dkMcZR&7p`HD2WlApBABsXqr;`sP{3j`ruwAF zl}HFD=eKSXfd)sH>PPHAKf>R>*1nFmWW2k*x2JVyqOCLDKG5C06D+;Eud}VaqrDI2 z2?gwxl>texASi%6-J>yeZ#MI@`UQZb6G3&7DhP~-b zb{?VH+Izbe;PhRlIpAv89GWT($MZFZqU|xX3pWSI1I+A4#*S0i#D3wFv-M<;SbQ)5>ej_0dOkOV3R{svu8V}cuwq_eCDXsAd_r?a4os1K_i zB1+H`p%v)t;SPFmA_=UN2ae|}4@d&#fj_#>5uyyOtH&!$RikJnszTscn1wD{ZPjo~ z_eSLsz}@^&g~RcD83aingYZXZ5D2UUYRD0(uX$1&qAdVg53*1{;8ipELIt{9uCd!+VlExan{I_;Au0sw777n@aCLI6TaMM<>L+XJTa7 zIgIZ#>Aw$Fr+WHEM>vw9VzyArdE_NVVR`qaM)xDi{h9raw13OcDAM5tspvAGbH~!$ z8%=Rc{Q`t9t#lo5_NP(~R-(Dm>B{~IXK(yaJk>uwG&aE@MpK8KkxZ8UK+djt>9jMP znLUxqKsuhC%{Z)WrmdxZ;!_-iL0A-&PLrxZ;FRwuIK%v)90%lSY&x}AgKr2C8bHd3~Vdr(ishmJZ$=Y=|n9JIANZ$U;T(wpv-90In2r}(g@<@=L zyy?6&2f2e`2?9=`Vj`av(|&mEti!8gB2+LYg7`6!4_wpVn$wMKF~1hY{3OYWSmUur zmS=J7=3%c?@=ym#LyMtoH{xZl4rvu(Bv%NOf&ID=>=-3mC zjzNBO?9Gt%4ar6hta!*ef!zgO+_H0uaCPf#+JwTc3@u1UvHi{io0MeO>Qj0}CtX<( zP5W_iN?JwDPSzQ-i_jA#o4_zN0iuhL9iMpYHGx2EZ7uZ!T4*I?y+LVuXXc<#Q1)Kj z#>23Ek>MpqU=)bv*(i7jMoofxDC!8Qm)d^9Guwu;)26A1Ev%2yS*j0(oYsR{*nPFCe^_z76oQ$*_`$jTF^oyKy>!BRwqaMU16xLXe+O@loMxSJ> zEE7ekoX2iwreFZmh0=*k!Au4@^dH_k#Ka((08bkz&1UjN_*0@cRv5*SAx>oh2T-ap z1lA1OCrrscLC%ICJAXcb~EXS{0%o zq;TNs+~;|)JuK&mw^v4yBpF3;eMe(vBIzjs-=36%Ti)4PrD}OI#_$viMvrva*osjJ z_k(vSi$f=q%cZ534`MZiT$Qm%Jmm#pmMMn=(^YNO;mnD7hokB#g0;3-YI`Ma!Aw-E z>?@iBw?xR5ElRGW39Ci1TJ?AL?v{8Cor1;L$oTAJIRYggwa8xyPcz`Sht|*X8j_j| zKB^J$8sA<-Y7H1wHPJ{mc#a6fRuE*q6oHdjyKMj?qgpxQl}lqt90>`$BLq*)qUE5N z*k6)`&wh_=1)wKjo5Q`>_YnBdl)^BVFsf9THyVrz12a|$GI`P~Hj2)|rKcgH#4C!D zdSt4W%}O?gd_znhNF-5knbx)8rcYln(NReB*{rA73wQVcfLrQhrU*`D+D3T^Ma;ZE zh_*q}BsK)r8(tYKieR#|#h7O!SFfBNWn)wwU#OF4L{uNqxVkQ)!JHh+Z(ccBB6DGl zp(+rY7B0MUVpZ*x3pCdXcNwaryiCD(u$`9m5=G)Q=-T;8z&}*MXd>fmO~8YLV?@DQ z?5tEUc6s4JK&aTngc8t-shj`zNVr>sBNFg{ccNx8h!O<+LXw2wT+qpbB;e;l4%6P2 zrjS6BnQ~D>5XSZj0quNQ1h!WQf(j2!npXwU)|48a3D{U_sKk^gmtjohw^G251&_jD zL4}F4I^S1faYh=|Q%IGY_z5s1(vFS0R zy+f#I7*_!SK|ywpnH)Waw@e3MB#j+q9jqQaTC9hhX45RTT~jI3cCR+2@?)xlD)T+E zn}d=AiqCW%L8gFynVYvF!WJqvmm%QEh#;FP_LQ}QicLM=!yK4Zyx7k`1cpmfPoB=n z(T$u#a#T4{$jrf}Ico10td^!Z!DD{WP7;}E4;-PGh426~RVw2Rqn7t!eeH>c(^eEI zopU74LKcR@>P?u+P-qJ}TC2|0Ajt&4SdD`wgd%?207V%cKu4nFv~-}nTn4=g&`7f^ zaJ0#l4;jzoaW2P%n1UHZADtqwKy-S@_p(L9!D0ogWn!Od!O?IfqUysZBqK~R0vJMj z=)l}tpfAw1mn4HU_=YN^${#P0`H8)M<|K;Q^8B0$AZuA3A+qVt+*z%;ZLnUL*|0Gb z&-P0Ls(A94S;q|xkwF~d z@{pN9&N~B$WIdTDH`0)4S()nkl7ptRA>iS*m!&Jh0i4a7(5~W_=J(EuN!ITA4Ws)qAoL#;ODU6eKWI%lrCaP1)G$epJ zC5)3Lh1N)f@z&xqj2y~^VUa73Fqx6e!YIFn7a+0)wr~_8(S+ez#;BW7!-SgChcVI2 zEKDbif$Y)4I65{rc@mr=H3yk0jHg}BN;FD0c4G>N-o$Dahyx0#>d6!)Zm+ z0L2TW1~?ojAboK-osk+F)X5YSM*FpTkW^`50>v}K2w}zz(WG)}h#V@?@iJHxV)0Xp zOqLGzVCxQ?Kb*2wMT9XjXuu&WB`kqXftQj%8Kz6%NJcb<77Jne08@`9;V!6B4o3hi zty;!un<2!R+1MZi6|=u+9E}ODybuLtGCC~fAsRy#4TWe_5`s=NM(qhIff22WVKIa) z>}YBT#dNZg4^>7}kRDY|x`iu>YOx`X?Fg|J;M0WBahp|OG+KJ}^APco@#yf2+riSnzu3VZ>;{`}ev^EH% zDKPc%NF+;itkaIhQ((zvG#*?C2azMAo`eY}3`iq#1mPzdq4cPnsc=DPF&2iZMO!pd zO;*v!KI~{mV`vyeWB4q4Gzu(4&WlB(Wq3s6e8nWR<5;9Mpu%DSdtc!yki%bWE)nX1 z2kFdW79|Y_VvJMoN5inMACd13QaHc!cgyFCo7U*!o$KS5;Ig`>!-#9 zvRXm!i%M8@7{o|r^%%}torDr5Q0$K4K)d2lcoph%I)cUmcbHz1j3&*St9Iiq@ja7YYC+_5$P_T{z3b5Y2Fqt^t-idIQ}45(?7*r)ri@8aE=TusR{4 z$B-^5oY9fY86}TI<7oxL4MjpnGzr>JUB$tYNi>liWU35}%f-@SIOzo$2IbC27j+1r-Aozq4#JUq;bx}AL zfFm)f+KGx>=MrL3=147;nx)gE^QVCl84FoyMj}LJha7Mkr*cyT9Bc?@oHnWCOll|# zs@KYjfOIk8&>|yHKa0lGY!ZzL8f=DR9`=gUQ7N)!q7hOb;*j=LUAGZ2`dcHEVsx|} z9?lt`nFxc;OqVHyk+h^ig3PsicZktRTavgXIVy2`FJwI$s`! z(trv>&6$YMSfI1DLq+TaC~UMiQHF&HYbnFY&;TcO1#P~NwlXp===%P4YB&y~Cx0Hg0WYI9 z>d!-|)}PNq1vL1gI?*1k0AAaLb1RLhcn4)Ys`f`A^G(rF#|C&>eIR*#(^V*O;6yAA zr>_}B7-I%o7)5+`0W>kP1<*;zn~>%fpcuymUQzV`-VSyY(LE4>eDR4+IoDB$Uv|^3KVa-M>`$!zDD6nCV)FPrRl|5L#V3Pp#7DYf?MGF$3I&nXV zC{}r|Kb#15{mCdGj6j9*o+(YuQTTprl7~a3$m)xa%!h`Y;kyga1f{J72w@(@vvj6_ z6<~t|Q`H>G7S3ZpXO^O!`CKJTMJx=Lq&3E4fA@vZpton{NAiUN_MjUi#W$q90J_PO zP>|#JR8)3TwKS$`vaY7NR3fc|@UD=52sea#jN@Rrnr=p^zj`(gL&r*?8&n3!u_d zxQxjc76vn#3iiV2X(dWZ=ZIS9D^aHc8Od`-69-D05 z8T35ZB$u&5XhdtYYZ38~tVawIOGv&ADx6ajn&qB|C_+lJ2paT&eK_|40d_h9E7qkA zkm%bHL6mI|@h{k7Pvo;R5kv^e>)i-cssdZyQndsdqX;amP$R%H`$r+@K0w|2WS39u zKrd+`=&>vZg<5q);8~Xh3ar-5q|=COAp$Jdae5W-!ti=JA|;;c zMaqi6D$D6`d`e9o5rpp;jDRaE?r>B*RmLl0u>A@nd4&PpdITz!AuAuUeB@;@F4K&r zgQ7HE4adwoZczxSjBo&Ha28~ha4M$Sjp%9gkn|poNo0PWLe+`M(B!X7)kAPn)I>x` zb7BNoEFjs8E{s)$7^byC7)xB;=(L$9Hy{KTfVEhyOp2ohB+4AE0ai__;Vg(oE)1uo zWt`5gg;C(*uu_afVQfSrz$u~w$b1w|1PqxasW67mlwl^!ks7cunW}j#3iG51;Vu=9 z%<6ApB&m}zr8EetD!eh8uJUUb7WXtXz@;!Lklj)^KgysfjDTcNj-Xf5E%U)}pul#L zlJ3J)DVX&^5NwF&jfRF;oyNjc!nGpOCXt&)ctBi!A=H+7rqYNWO)Eya;eQb~0aoq!u`n7Ai+%K|d_1>Ea5Op(n#WdTU_ZGnvHl~5Dm^~QECtalCEY8 z)ABg8UWRBug$a}HeF`Oono;)~g>hon(Gb0-TAfoIu^|nqv>~#=1S>Li+Q8xYI-Iy# z1c$Q>V{Ne>CL?Fs(Miqai<8hm@UeXdS8&6!m~ex97?O;9E6^;+*}!@jPG!`C(sGE> z50{nuynO&>whFFWhPEP8#K|#Smy@4`G~~o*p{%Lk5}Z4VP^K2P;cD9I1R*YN=~;F*X!T z9SGM%Kn5Ny`$pi%f#spf zZ-2MoRn5F9zxC8l& zx+U*9>3<&72jv&+A&8#Pw__H!lCx6|7HFaH)*PVzP7}r+SB=AsSN+qyU3PHn>~U9BjkuVm0&? zbwh(>1fh|#cPwRn(T^U&O*i3{XX!Ey)yo?bBc{5o z&4pw7zaqwP!5L`2u+7gItjpO$Q!mcg=Cfpl&5+WG>x~=vGVZD-Am&1sDKoX~;Tx}5 zJsR&qS4Sl3?ttDku^abPR881v^cuMdhxcnawc!%Z39^1w5~s5WmLCdH=vq+u)Msd% zIzx3s%n=Skxz2LWQr(Y{{G4-Wu?hp%JT>vv}GUl`vJNu zk|-e~Xb~KYogdQT{ahW5>=j_$Dh34%PQV@zW=%J85c~EYVQ< z($eZc7jv;7#N(cz@u+d_^5&d6bVqljLEuK#S=nks`4t@+LrjBG?7n2XeD$r{4CcuW(eY-Q z4yj6mcJsm1BUEy7@{ij&2uYWU>J7G`N)SV#X}Htft3mlEDD_#wGM^q?kd`9#MMR;e zPF@egk_?kywnod!dK~Jh9#k=srbNjl$G#I~ouXHYY93v}(V*MbKuEmV5Kwx32rP?E zG)w~wjmHM45E$hM!NxsgHv~;jF;}+oEZH+9VDXST61Mb`qz}*-wH(!6;m@=sq9Ie3 zo0JK3Ljn~-<4@4@J~n`=7Mu4P4>dvw3vH=t!b#>egepG>p<8z*N~DM6GHF5zN(aQW zp90!`y>6F;(z7Z>$Yt`zs3f9lh}*r!zZ7r%K~pTGgC|cNjQnxBf=AZrJc7i(za-b# z(4~iS*k1utsB-c=HuewT0nn9Ry3CNF5*cPbMo|(!+V#?t?$`T4>C-s2Xnau`mitO z-*~`;#qd)t7z_d{5im{WlS9#lHYpWf#C8M;EqeWjm$tm)Q6c`t<2hmJ| z4N+p!oDAKyyFHx_-a<|n(jP3ImP>6&>A{3q)_<^*ijC3FZf4cWoyW!--9DyqO3kCa z`mPn+k&?;LEJ~F^ZfXYYH$9DjhC)MGtT!0SM-ZdiA`De&A}=IEhVc{^n4DZB7)Gn2 zs0=|_#V$P&^QH9MXBC1b3^4Z!Q(5YNOg`pL7Z|uP8XcS_7mODJp+1z*F9_4}S?_Ie zfQjvyBjNC?%${}AD~*> z2dH{c%SeeNE8J0@AHg-kdh|@>t4NV%TUb@VTGxS zNX1uP?6HxZl=78{LO8V=-KpxlsuxlNFi&9zbOq-05^!Dpf+>s0dRNNi7dO9}ttua=Z>2R5Bt9?4OOco>a?5K{FYaxoFxtd--K()pxhXnZr2N@+YakQquOxHKJ|R{SWY z?M=^GIOfixIal4*Jb$i5V8|yNZB;ucer#-&k#)sNXuqFnv?w2fW3P>Pjv?f9IY>rd z3&1{eew%&Z5SaGaNr{?UVVEQMzJk6j#?hUSgA_b$0-C_o7umzZReMl3ymm5JQ}dca zS`P)nE`N1CH9vczB=P9s2;JHZ{zKI~pD60cn`k)i3lb<*vcCmFyF8qA977U^mR3}O z*kqI4bm2H1dt{HkWZVF#5@~ysv1k%;5LE5%n%i(VmmwfFxPzDGICN6Sk3}y=W>pv_3|+A!T_OyYCA;q1oGFR`{ZAID41uDRRG9)iM@Pkf56%XGP_yy7WU@l|MWy)*2g zt$doF`uG|s?3UAo=oWzR(iDb5o~k#C4(c3~W31054x}FNr_nimEY-Z-x42LN08yCr zRS08@)^u5d0G_NBO8S>{C)I3{L)8WW80SkgQBaKPBVj^MeF76dX{kau-SR@oW>0ui z1S@5d2a42XAwZB0gN18czK_mK3v2PJVWY<{)uk_qtDF9HW!51n!$BKKXNoTKuY=Xl zm#ip}ygH&xD;LSc6fs&+$J1sm^LchCiHo#;20{JJ0H|UD05jP1E}O%no?=z^AZRNo z6Jg+3B=?3OWX8T~Oy(eD0TU0$pmU)8+>BTqoMf!Mla8gB**)iI&@sRmDzbOZ2?rr~ zBQ8LZt_8f@9DFIiWW;x(V(TP$5~}cmuPJlz3N#tlq=PfJqHzX!$)|Sf9pRq=5S5i` zU%FJn3CBR||luKrI-23W}9$jUBv|z^;I`0<<Bs`$>WL^dbY7l)?ExlFE#E7 zZA~N?RtlJyXq%ors7vEkYkNZ^8#l(QCr$>y*f!u75x~$YqdfL2b3ArW(0Dgg#&beL z!6mb0=z1lf?ZKRm0XT~*0wf}Hj8nX#o2dh`^cRG&C8Mkv@rD6~#qFu{u&im}9wL$X z&c@`_9zGrQ65mHSzBI2UnN6RfJLEX-(JB5z6tGY&;58T=TcO@GNQMsBh$zf!2#U++ zIT<}?dpLe9rx?RKDOhRhyRtPL`-;j6jh0|K4SrkP0BB9d7}~vH2SshJRg^AXn!y7{ zltna-x>L~y;aUn99U4DBCx?CmlQ>-KZDXp2M$g)Zz>kQBQ`G8o@C1vqTJfuqIoxjo zGbLIHGO=GWlVv|^6dR=gQKE$NR6555&IWuFkabv-tYW2-t3#PYT;PYWOaijM$KDDr z0of^>SFX|!4$ELsUs(WoZv!?O6tj}CEOddHGb2yS?I7$9F8>%rnKa8YhEUH7LNrrh zwBa}Q&K2)e;dld6pcBd+m%{r@ukkOxM8)Z@WC3NZ$WaKRkd0ObSevxev4x1Y*rkOT z0QQUGuu~TM?3CBT*a=|;7wfPSk*GBRd)1nN-BcxLXSx-V{mif}KZ4q5(%c$a;kLXy z;ILBT?3AMb1$1I+GfD*Gk<}h+GukeHu0AkeoK~x-P=IscS52|U!#}Qt^s+2Iq z6)%PHM5B-Q&m9~E@mq~fwWPqTGjw@r zfO0>!V;a$M9m^$0%oEgwM_et;_Rs_Ipo2vbh6)o55YAC3rqn^x3=-9ZhEW5mm?WsC`)#T1`rh%oQ~Gs4kBOBFRH_tpqqSZ(|sSX24q3399^+8X zL@_r=do9Y#iyIrjVu!wqv1N#^l7S^DE}PODpDnyguXn?X%2$%VY5_6in<2D_(_~M3 zNvNVR$aOLfl{2}CfoeCDrUK;FnXAJ1^F~i>5XU_%pqV&$`=!9sr3hk*gvJtwVh7eI zDagLMm-6!@&Xl&*Vv@R1$uOLGj!)~cN(2l|22_|nLTy^CeYkOs{`#-E;|*LHZF ziay4S&BvXn;dCO-Sjm7j@DVUoR2EchI`R1QG>pwD8(aZ6=1R7QQUTgi-6-~Sg`QzNddq{dKW$1g$1_*%8_0RNf{j{3t?JAi&o0w5mu6Z zm=^1d`3np|so0_DrJ{h}^JZ*6EJY`WoQaCD=~>@*Y4IdDF{(+ZFJ7POpFJpm8cu4-WCE14yI6wJ6rT*Z%hUZ2r9xL zO?b4Mz|q&88RNcO53@HjAe>Q9NYuRj%BmQ}TY2w^66P8T-eAu0stv0~B-AWYF#le2 z4i^IUm*(dEiGGytZ>A%Vw7TRwktRx#F}=J~m_);Jhv)WjI8OOb!Qejd1Wz7bxfM^lhmcviWtRw5R3y>h$idM4&nZD|YgkeVG z=+Lq`*X1Wj`ad!4uwdp?fDa4UnfqYlVjFJbb6CV?b6g+BI>c!jgg&fpbovNgwE=3> z=%IXt%n^M;we%1hKOd}@{A|7CgK4ah$&21$^)X`6TE?^tPK{}h7`Bh~`I}NR`lulg z(`|>$HbPi*ZZtN;M3Aw*!w)!y^^ory!8!Q~y_)+5w! z)z#5pu7j*{$|}3GAn`2f(SB}Zfxw$6IIunABX9!0hP!U&$y~UfE|$mS>0`}Ew1Ln> z-!M_b9UvAVwI7bk_2IHum=77|Kwuc~*8wYh4M3)VrHW5_#`a9eK{&8IRMRy2oKHuh zxbzuI!RDjUqxj|;(E<5z8D3s_Pdlm25eWC4ikB($f2+ zP*Ztl&}%SYEvOb~DvGt>EqK$q7|vzOtMq8XK71!T4kz00b(n-wZ2CxjycvF0`cj+-~i8Cu2( zr}X1Oe?r~*ewsDWSe^ZIDyC>G&$M8T=F z;-}8HA^Kh{IdFBN@0aOW&E18}8FpFtIF?JNQAlXD3Wa$rs7R)irnad3-5gO=`tj?I ziE`$k1oIKXseHdCBq<6PC7rZL`-fAM%>pT(`~V{`3sBei`9SF~z8}>lR?)0ullz){ ztVF^4ho;M^eoDtANTBwKHD{qUJoH>Xg1Z3s5+4@H`LUSuDI)oPfI|0HrOOQ9FyrL( zG+D4>^=lDI%c6x)yP8ywXyOz30_FlgGht?HTb5XaN-d;&tsjGW#666NV~bLZ{#YaH zhrsKjbeoD3r*!~1sLpVGC^>ORfrMfFg%AKU-!Vi`6bw+H8rDrk`8$B;?)$JECCfos zs9866V7j9@S#>*H)xfJa?PV6~OvoSBQvF{>KvgKAspE;utRTU#v6#%NL||H)%ZXb~ z-71e*h5(TV1Hh3m1x8T^$)3xHD8pBYLbyEfKt+$spJ{p`c@C|oIk^xcq99<7v}7uv ztP>GtHiOA40HhhN4#9nf6zdYR*0?br5D@HP3>xBecLxR09eY>YAPwt>*eHMB+h%kqVXG=n()l zw*4TO11^b~R$-;Tkc=zT#A{&`Ct|OF>Ka6VGBij;7Jrt9itjgF#0Mc+MJ%;QQl<3Q}oGEldDnl`jCNV)E9p1SE!Fc?l~GV*$aJg;@6@FeX{M3)n6=4MrO(bFvSe z!-QrcGfV}HG1$Rq$c>hTkU5^jQ)fLO2@6#oYZVnB7?q$=9j5mRgsCLjI?SBz=0cdx zOrax)o9YJ~K|I8tX=6o^%_&=8@d`&0Hy)44;BY4Ke~Li%Y{lQWa3Zwux!dO>rAR~M zre_KBu@gl*O4ZrG&;YfO(i0^gDNmK9fXi?N#4?*WDKAQR5dihD06+#UPYMC}peV?3 z@Q|OfkkEXMMG&NwNkO`t9STckXv$UI!~$K;$Lc0X$nKe+!vMhU(BN1B95kMORBYiW zkzm@Cu`XRofKqK?IQKn$KBz8$)h{KId~vR(%7QAQSw`SPI9MVss&oHELY9pzFLyD$ z#A`93aHSZ{-6oPWw22a3(Nhj+hy4VU3O0d@H0K3MEgOcW^K!?UMW~sj+~FvJk-7|j zrPkBaf?z|PQNVV?5KjpPLX>g=QE8?&7eWo=xT>TWLZz_Gi9%UTAt|#xB8#%75U9dn zd>9_8X9nS_FUZOw3Wb&kg7GK`Rdx_Kr&a`#0omWDd*Luuo?;F&RFTycu~1CykVhQe zD#h}R6w;vdPGK($T7B!*DYXf}dtA7Pj?djn8$f+ccOK|{KU`T!j|ggd|8^XQz`PZz z!&TzMH#H@SFG_P`POI#Rl@$R>N!Fl4x&2t8AcN8#K_nGv0kqbLDUzbn*`d&MvJ`Pb zTPS9r<%2~$kHHr}BZq9ODO(T9aFd77koM53oATL~A%Cf?FJJQ^J{cB!+`40#d|A`Uq`W;aT?pgYy}L!spY z9EbFgN{jq8QJ|GnWK?K+Gn1==9RvYKP~+9$>OiwW3JL^`Meub}jx!7;TFj~H-eKmN zCY2~S(W{{*YL{S;1}IgGs1PVhJ$TUUV^afD2P8c-jHk)VxvR}(OSsTWOoL5D!Akc4 ztpFJShU$A%`aXczC{p$Ts6yXEL*arh}!JFdn=6qC7* zo`d+l6Lj9y6kO~S*h>YoycitiGF}9;Kqqj2vj@{Cbh9yBx<_~RKrzpU(isL@aquY{ z0;)s#a+NO7^68+U=b$q5EQFDPLff!m;||}>L*MVA?LNTsEM$aX2=fl>DOs){+iy%_ zxYw|0zB#w(=r@b>od-^Z%Fc_vp(z}UhusdF3yw}LIKpXu+Z8#s*(?;H$v9uTsX>P- zeHiUi&gc}9saCwglvAV*UYpWuA94yiC(e#euIHkO%(Ro4o|bCG*u?G*Ux=WbJP)8Z zDK8e($_2j0=jN2xzrH~oD3=K<1-l!V2%|uBszJxeri?rzs*$Y_O8cZMM|L%lS0|Ip zrL|6s&OZ{Y%qNOMU?Rnw5G3*ed~Y^s1bq-ypn4#fn_Ig@P|!Z2BCR-Vk0^B-5tcVy z@KLbBqMc&W;bYU7h{aNgooY@Y+p-qDgm(^3Bzug95;7i2#&}Rmq&U_TGbEgD;z%!aF+Y80v!8ZYgG?ISFzw2#NMxSW7^0d~$NU{A z0qD3tH!e*Oe4j6uk)V_-#j44^aU52?1ctr6dgcN1Ef$di)2=Z*I0{vltiV#Zu#)kr z7btCRi`tN)kl-&_Z!%M6GIi}%g&q|kBsHnZfo#qYkQy}v)H8@rMyeFy*A!@f$#+9L zi;1wSLj)6HSH{9nR`V%@DR`{1f+Y$`s3A7&>wUC zc$g0hNN|C(5Rkppx)7^WIbFx4M{1hwa^5Ty`Xk@rVS!LmHYKq@h!|a&n1BVeVzr?> zH?`PzAhqaQ{M1Zfyy&4g0aH?CD;s9uauEK1Zt2?b79b+%A>6XpCcnio=u^az0Tj+=tWgc!#S z(%d}aB_*8!NlA>?WLd_ufg@@)1Zg!UfmEcbB-Ap-^je{KFz7xnSbw7Y|(|yQiq%`RIVDPG~bQk2ooMt z%kbqQppts0{O2pao5!YQH{OEr#Vjjm@lQ}3qfpF@<^){O&O3x!2C=qw6aoz@DpR`n z7Y7OTg+=0lCO1&d302o<%Ffmt3bR&St11k2jS25*EW9!Lk7+(8tnAYNR9$zUv6 z)$wNWV_ZQq#dDQC5zwrp%m83>#vv>Ij1Yl^oQNErRQ)xAK+hc!C~9T`^W>L%OP#kneg(SAje{Ph5Kk*a0`KBsfu8_5 zQ7BBTG>wnuTvDb8Zi=jgajLN@IVFo9&Lcb2{bzg-G{+E%Sn1@%2Fe5oLzxygeUTl# z^as?o+<0SMMaL0PZ$$4jWDufg+Yfy@2iApht5X0b57?tFPk6I)CIlrWrUM2X_9%kj3=~%plqpU zicX>jdr%nTp3*>l5erk4SiN5v!tzzOuPk}{@&ckNq7&1oWDTMO!3@Q+p$>->snShs zGU2e7VzRuFGGnZ^r4dTquT;Zs338+}t9c3oRV+#m$sl#~Op7TDo6|)a_KMT0(<&#L zIIEnvTL|yhk(DeKd_qVC8i2|~(LnowK z+d>bhXjCL3jRiN&ctk|;s469I4Ig@^9I_y0KyMF-!G`f^T{9+dvfjm^Bt;g*1BT>0 z-a;h0-{UxuBo`Hr<_J`OhLFx?1pqkS3MoU!lhuwX?dZeXI5W=43iBP-PEf=0~R{$(J)O z;&LN+%NxRy+*3lOrD|cIFnC&KLm(v#G)Ih}=q4x_Z7g8-1*jZPk_=>hyDZ*lvh-m- z3D2U8fEJanamH~t#K-kATE($T_HuwdUIBYA*xmr%SRJsB_u<%8B_sx;G3pLHRRNnK z^+XZYvM?nnaDA}ijVn`JauQD5knY4mB~>To^r=woEvQwP_ERNkce*5}>u?zg`UNgh zR__4f6zCMMme>M;vw=$1B4R)~wBeKsY(+q57t;lZua-x!+N{B$(_m!Z5L|V0T5A13 z4Xk$txdNi#Y0tk5$PiOfVHwPziODU1PKSju6O_ds;~Nx#fDVUPHD=KEz)^=k4Ng|y z`iz&Fn_!A<2(T`riyP?JAnFqj&lwCvW@QTEu)#B$fR@j61-OChwWS8Axdo@{YcTND zm9AC?NgTW=pkG3qhjmbbUb#T?qz752iB|+N#nG~X4udh;AVsAq2(8`FJxMU!j7V{E z4}k4r`4l|V2wWucz<>p}@$g_A!fm^XgylHn%WE)2gM#Ck6enUkO9TMYW?5()Wi4Wf zB~VD)2^hN23ZG;fR7U}{6f3JMgmGaTQu0XLg~kHX6Ev$qM0+Fv3dwfu;zje&olr<+ z6wd%~JRG+ghZ4Q^aAar(MaPf*880{mtXuN4wOJp8tpS>v41f#+{X{_SdzdvC2-SBG z!h_!6!8lRv#+#niQITOLC5h20aohLs`Ke(d4!&n0C`z^gip!2WUxiT87q?uFfcaC@ zt2xxAAOh-E0}ZNO4R{cYmM;{j7*Ms&uf#KnoLY%R7;1V|9VFk7mn1=P?JucF`yk>F zijH>Gfz%~zn1>Vz6LR;SDDBTnXOpt9a+Ibf;c%=@_F-ln?T`kGSJd25QQ|C?mhplF zv%F(9oH-`AzbQmMWwFs+ z#&F+?#E8vnD1aKb5OC=V4lK{eMe;n2Hgj)FJ4n_Gz94fG^UKh+@vdI z;f8{6_pQg)Bj{+4qCqc~XC#zg)+*8>n5^`HInr)Q_7u6QR#u%7g3RuXXAm|WDggBg zz93uqsT10MtQ$}nN_JN?{;_(@b-0^Nl15BHGBr}wUab(#%8sshD)MKJRJKu*kg=&) zVBZtdk267&(EnouRQ~^u;8a}_TpJjV6M}?ha5d_^{Dw`?Nu?27(9A&H%@W`trJ7h#{%JMn| zr!`=ZRi5deheHmpu^)n;SCsm~1ISWWl0Za*PGTh19o$PqZ;xdg zHkH8Qv^NRn4~e^ltbn*Y#A%6u0hD$CKv~lU@&QD8#tt_Oi&Qiaq8z7FMB?N;$%v5W zR55Y_14J!)TKefpXbSv-Lr}I%DDt4g;(&yXhhLgTpWB$_kI&qWGykZ9n04%tWuavB+4g&QQq` za>{ZK8O#mJuqX_+Q1$n41YPAp)DhY$5(x|O> zt^;dXY7U9gR%yX(XliQ2s-0RLt^H_vtz*?7b5E@XV9-)A<$3LVR#*tF8Jr58>t&9@ zUJ#OXwLqx%1W@|qSP)A6iDps@sw7Bodux5dMHac*+6%G?s9_f*fTagZJ^q%09h|Bc z`zdNU#5~XPB734E!KjJ?i?kh$;oAeEP$C>sV_R6^^L|E5%3@7QdX;)=B@tU-6KEk6 ztz4`y{(`{*a&FYTVu4Nk(J=Lvw}nL4z?7CRf??AJFN}gBN(kkG1%>EX^-um-nA4bw z_>@k?0#fr47q&ojOu+II1#@Q$hH-t;ra`%|Kq}UOq~%HFVP#Ku2+@OD7+7FhzJtXK z43PbB*i8unJRhf-19eMWQi2hNH1kuKV#&=TU@wls`jG1bJ~eLiq5Bpnt5H*Q=-vd6 z7r?aX7{O>!T~oxv7&Q}(;aa7ei->Fx8;WX=mzWf7J~3Q$*2E$-+MpV}tGxWS7^jxcwP_P;q)Ky2L04%} za61GQiPqV5nn7k5QE;M{1talBBjrhctg932FuE_OpnAb2!RX>E^dl}3vAt0kh-3XM zcZ>>{l7+@YY1OH6RIegIrz|wQWb(Zs0Z#Iuh)I>tvZ^`*sxC-i6+eveaBBxL<>dx6 ze2@e-a~F^SbM@Jp0I9eDB&03Cv{|UvAc!15D|xVqpmKpxxO6KTnQMfgtPxAD7t=V0 zkqB@#%4;M}w7`)l3WMf~#1*14!0Tor=Q-8aqR@r|Se6A)HmSN1RBh9an>0Bu`4Pm2 zh&@37Bw6P>-nnKi;w&A~2oTG4VgV2dashzed^BG$yJ{nAq(S9iR_=K(6Gxdi}9Q_94g$9;#W@r~lxzVqc&WrXR z6;QwRZhcMaFAB_io_}KN}Un(AKOpqjGls3 zClpdv5_O=!g}l5VuOr|RC@Ed;tgRz3_L&P21(HEyssk65y0`*lb+}TnELhsY#H}|3bJNgKZ!_VAUepLiiQ43UuqTaC3Wh~)viG&GG z8G*=UK{y*h5SFqwg@2ye3YPWbjFUYcgdA!>)q=#I>9$N>ZxS!oa7o{rvq03tX(b&1 zNrUMbDwkAm136@m&FokUL}c`wpPJ`c-$+S#bDX3A-!DWK0R04eH@tVrlLHc0KFW^o zvA^5WTWI)k`?Fc!7!ww(Wkb@$xjx_aQmgs-siT1JbHqlgi{DaR1pI1D`vjCNQIN?M$Sv^u zST{bMF9;!S;Ny7<-1kDELem8%L+o4oVBNg5>E%O7XY2bYZKeP6fs}j* zD6=5lYbR?YpIjL@8mZgIP&ND?=H9Qj(<968D?%6uiXaGrAP9qjpq6E=MmyWoY9y^z zGou+({cpIVR%@Hxs~yY^xD?55al|G$BzwBs^2F^JhG7JTu@}Z7Falo~K@j-D2!dSX zI`AvVMG)j7FCi}=2$JvTeCs?_&+~i8X1C-`AT@tao%&yO>inxyRUW%4y|t)e@-NAH zXGyL_a{Qu&P*qw;Xrx`(7WRzF(WZfnK;!*gJ-Rwdb3?v;veTfAAN6@-Po@QL+GMOQ9cx-Cf+ zEE^!jjRsly0$aa`S3DNg;A$-=b3>WW#dt6U1hKHx&~m1N-XPlpCBXqirnb9Z3^%HY zxAGR%6uNJM-pK>lkz!5X4N|{)gcp4Wh~@1#F?I>KYumbw*Izz;q0;~x*xc?Y5^T(G zPt?j0eu}{cu8Y}|X8V{;L8T0llT935xKkr#z9EhF;VJ`{WfTB3n{#$@R6?8Kn)`rn zw$J35))0=B$(v4mMZ2o2{4%H?4U*$0rvLa3ZjgZLhnT_6$IhV0AZCnKU0kyf zT&9Dwh}35(V|{Aqz#?>aAzf{ek2+;l_p|}PuD{;%YaP)r40q;*STF*}tFnte=%A8pB%WWpvEM<2y+mp$r{N@rg%J5KfFj_*F6z4s zLuHbCH*`lz52m&murPH7nyPkRfLu4wz@iSdfg7Nad?K9MS!c2{4GNkUNem;n*9n>f}4L zf^)$U7^Le6S;3KiP25-#Ack10Ql5^&-yQyN8-Lv0QB*3M@4C`VCr8VA9Ltfr8sD2N z`~CRVVH!Cw@nTLs3BR^0HL~C~5-wEbNSpNatRTiv6$*R5dAxa@vgH(TV2Z=F%f}mc z4uaIgK6r#Q4lSU4pm<-kLHsDEMr8*M9fRK@a||2gc<BsB4L6>1ws=Mc}3esiiRq z$UW`RHS;m!>csK(a%W_H+^n>0Hv1K=^N3*Z@%s$4p(S z&s#=DHdx~0#(w(u1$E+WX5=J$;GIr-U@~Kz#!c!3q zy@N=H!Y@0%g6LPBLwqhq9uFL)t&gOd2L;~DMzCnb&BAd(W31_{_c2#-|1P(qHXv)+ zrvy8oCW#_C2m@7%(cS-SU=+Sg!;XA z7ok9yBh`4bj+za!F;4Z9J}^36Oc%5ZSdAOR1PRT!treeLH@T@GJ&S=pRYPKP_3Qrd z1y8QP!&;2ByWHc%I;X-#tQU5=;y`ZrurU!Qr;B-Vblq^Oi9<1)?w@6xNIb_LME2rN zZjGFMVWx1+(-b7^9_Q6Iw(bU#Ehiklh9c|z0YjM4x8yW{z@G`IsVp*CY}~FV;)fh+ z&m=>=>0(H6kX@p_>g1~K;ofKSO2UF~|Hb}}Tx7-NwnkuV+GB9~>1MLkAnf9%ZNsn5 zV!Tw%(>;NZQLm_&Y)`sW$52UrS`ZSHJJ@EFlqsZ8+AY`!mtggNa<4-dGfryU%xE<& zKRp!SeL{5LEkYW+&0hcpm?YN82kY@kxK?Z^qWWedd0YEM` zjH|4XwTw8QvH*1saBvUzr=v`*1vr7+3Sae%cfL_)tpsKQk!T@OhSZc`UK!@eE!LFou8$g}h)r-2G@GKd;PcG(P(~a;REl^aYc4_94Nr`vO_5?;E!*rv6-Xqk zlJp?pm!#DQNA+QnqDH<8Sa#}XU^mLF2Y|wrUKPZ6e6fg0H!H((o zhcL8WvKI1!XCkgu3-;HCz5El8>sv$K)RHT8Md!Sbslq8fsS9_t@nSrjuSUy;?-K|$ z9MxIITivTLTT*HuYexaCAbMLrt+CdCsBHbpg%}N}{^~VKD=45U_v*%;n1;nBU&jI! z0RpcXL#pL6hD=#WK5hA*ab3RuZvoYu)AFjk&+8mnb>F+rST^q`JgRL#GOIXIX%X@1pXMkf?xp4Mi* z`W8)KeJ5ZY7J;XFEczf*LhXzN=<*VhHj$zmzf_*tN%hB7SS_^UE7Is5dSI*sUw3xc zS-VDHZ{A?<$%L#qq>wcfYIzb2s@HI}-7-47*5cvzuK0BgU_h?d^i@cBg!{Yq+>+B_ zWasjg{E{|OpOK0seAvN1+4zSKdZ6q?695~1WRShU`PPs75CLg)Gv0Rsr}Q}=yFL&Y zC1qSrG`S5Ll>sHFa;zGZbYH)8 zHmrUPqG}COE+j33A!yWqmNBQkyrwh%p1jxh!v(ZLVpE}hdrzST;&GAsU4@Do5<>`M zUJVA?_>tBap!#5IS=WJ9@l+Tbj7IzyaVj&bb+XeVIMvu{>pd}^HD6z(EgowvX>D-9 zr?w9>CRBQhM$@QjC<=4tG_GoK^BHA2yc2KztsO|yn@^+33J!Kcv}W+MXm-|4i>G(! zuJd)r4Rd;(^MvS6cntUC=yqfGeCdrG4OfTGC#-i*&PQTi2nIeMt#_{X=3}n4&FzyC z$jnx;MyKrO6Qz+%+(^TCLL&UfPsom+_fnaqA0R^i=EA%qW zgkh2xgDiN6PmIBG`+>TMpDaYF(=wkgfIo@*q^ISi96K%@YioExjlp4O{8(;SC@R_J z<54I(SC@4rlI*FAS&{}N)MJ;Sdv&z5OUL$brNBb~v0(^UMjV2oU=kL$^R5H=!qpO1 zKhxH_w!j-iiW`m~937PCG$j0T63#8CEGX$y_|VnD!-1}TYj3A(fF3*=N|t=obtfs1 z7(v`;SY0dz@Tz+j#_9pM&K}2nL@cgJ>bzNh$Um?Tw))2iTdr(vP9QopI)Uie=mdhR zp2dTF&vTN1gQXMDr;8v9suVU!>#|q3Cg9vfUWm~2_&WDVhV>&hSG?OXiMn!ETRJ1I zP{Q(g0|&54L_OL(fsS8P7)IM|2VE!Wu~l+@0Ma@Wt*7sFvFlt+lSL;b)^5)f_H)sP z8F0;j*fc2$iG6|9=zcb7q?43Eq$aRW_V;eH^)>-ZTsl0Sf#*m}lGkHP5XXEcVv?fy zrA;D0F7--OZxYeJwmh4lRyxTR*E~#M7r#Kio&ZJJd^g$@UXQH&g{7TI?64vy@GBdK zUr4L0UJ3iLtvpGRs4nqu5;Ke{SQKXJX#(wtiepTmDH2b>m?*UCFoCi=xd_EmY!O;p zx)@RQ$;AjkCc7My>ZJycm#mb(P;XQh!s&t}Q2P1rc0H%%+}PRtY6@eWN?zqE&uNro z`$i|5MB-tJ3IIMDWC^vaw z!^q7~8dCU!o)l^0{e0{l8`8&qgR@%>K|^E&Nyq9McH?WHI{!pdC1kQSBgQSU0C8#r z(C!UKQilYWcXanq3u5tcPQ)^mF4Ek}$xvL9A_=0!FLttKw7s6?))J%q$!Jm!O*Z&J zRwpN~tcqsTHPC<>i!kuZ_#^#x<=%!kMJSQ^NiJ>QBF5E0Xdx~)kz=dqhK?UMuq!$` z=2rW03}fgE38pbyLlv9WB(02#IU;J-00j$eYly;HsCo(rp<7N}`%wc*S51L~ok1z} zrU=_pHOe|ngmD(K>ay$$(dhF5v;n+nhEG`4qo zculVn?4iSbQ8jm7^OV7Q%~1{N_C}rmtpVDofk}5qIsr({oIoXCqf^vuM#S*vst^#M zO3W1^nOojjU9<|-362W5FIRPgD^^zPKt7kz&X_Dsx4Wx_Yb zte?ht#>4y1+PAMURjpHu(@f)IK(iEy7_!!?#oWNA>B0F@6;*>M-H^R^&-b$}vz^e= z(5}!}#$X?c8p9IR$I#W}bz?B)&c_79sMf1-o|Jv&^Q~f_88>_kq2Mtj3mik&e={oR z3W{eA8F*VqFEbamywLFDuG4qKR&bYkRcub!Vph#a8z83%Bv^!s-Cf+@j8jD|@|vuC@eTmj7}YNcy9T+! zHT-&*kFC3R?!?_3D0uPwhYt&6%oNHn;N>QJV71ixyHadgnH%j&fzyRg`E>GGT(_eG z9*REZVxIWi{Ln8LJ? zJ_Skm)KRf1bjwcAQ}EvQy(vh(^Hb2RNlR$m$MV#gwr&bj>!u*LZVIifn}XH4DM+oG zg1(rvBq{d~Md;wl9=!#gY;a9uR&CH`j5gSjXT+9c=PF)V@>e~f-~glHFYv@)VaaLH zDoef%Zca4J zjNlB_09x%_6*_Qx22t`I^YjEn3=pFKspz3_{AzIZ6$_N=TB*Ro!kpyNL zCxY1t&&1LH^hK=e2-Szi5H}b+FhLGJjFIq!DD9TkBPHW3QB$+(jmrv+xT^U>Yj*rX zXiG^EHjvconI}=cC9eUQnR<0z14beB`n(2pQeUChpi)fkw9sfg8knrZSTr!HW21w{|BCp7SMJo1O)F5Z(nfLCHPc1>dQfEHob3rD@__gkSAj~=ilmNVcff3g{m zsx8zWEo0=CDwP`)m2Q7CTr!S4VHwf7Do^JEK3bjth9&t;D#;=6?>8yQ{ApP%dBI0n zEtOoltoe#3V8%|PmwcnZ6IMO5z#Ao#ed6%J846B8VdmKwmBp#caZ!CrHNUGwm*Fh{hFUc46+h|$l*+qhd+iZ<2@#TStUF2$!&W(p|vNMT0*r)a+IW|uqo98cW5ocQs5XnQewtA*C$%vaagU7Qno(0 z+2tD3CB!t#SaCC{iv&2-dbDg`E`YM%sskP{x|D9?s2qo1fxmT(MaRXCcJAx&y6)-Q**r>1Q}^^)ITo1ubkbh?3P(j- z|M>~njz9@PbQ(iQ!xc5E@^^6_uTMG~!DX-usVOF|4a)4?CXwF}X=k+r(Gd1y<;|9$ z_CDJrBCJEP{{6rIPvTj@|=3s^c@XbOfcjBS0-?1j~j9RW}}tVzMoZG2{t% zlf@`9oe*`%OD~H#C`@b5M9Aj(BOL>rLfVc#cR6ReN<_k+HDOossI+nDbFSO@Tz6Iq zMO9T7T))?%lqpI$^Bfbd;=X|sS;f!#S*^9Chli+rD%sT;&9UDNP3=36{2H4$Cfh5k;t6S6-N9t@`#JMwg2Tdf_OfwrC|jF zGT>}c!UdUrk4%|T1_;7r2Yd{}M`#0oDx=#GGJqEo2Tbbyl-e7H&<`8-b@;m2^)Gj}bV*JJN!#F% zsf(j%$h@%02S2(v>aha=wQjV}b!{5jt&#}g>sTRgQC#OVyi9x8;J1Y>O(hD>b@vOM zneAYk_1>ipWV+h{?8sWrB6o0#m!i3QcZ&l6RVPa|eF7zIoytktMW`*5ItaQLB?HwW zQ2tqqz_r1)+|?)h)MCm-y^_n~SMS`pd(0u4F1r>FmsE8Sk5yO_Iw+m3!!?ZpJx_?z zok=m4(=0p%IfeP~Cj79gmV}+#!X%~(dWUP6v97rz9Xh76Hg+6wWuk3sKeJc9>k)hK z9eGwp?5=X>6+IR7eTy3m_6kkGo`H5t{-@SO<0*)gj0<>gu+9DW^bVU=DRxvBqYa*6Kx< zhIVMIIg-&qJEUHWte0g3LN3N$**-oY#;W@Xkz)z?q#r?a|e|&aJ|` z3*IWEj-K}g=>|;^5%0{>k~Va-e(&zV6s!r1>$=edED=z^Q9V&#A66d4FqOKzcm!h( zr?4QDdcJ9tP}Pl?u`3hQAC!$hg@p-!0gD4zEvPkzu+mbF0K0uGxe*ZiSF2mT`Iu3k@xCK|3N@G|{)|5!dw z@noAPcm$vVMDQ-Y54IQ*>f*dET??rt6^=6uXaC{2)oa$R5Kr{xyP(`N;HE4>?=Pf_ zilzB#G4VjBR&2eUvWoPm;vzwJcJ%y)PNiDTH?Zzbc}veAv0PC>4sSXPll9k;gz5^D z!<@S0KoCxU9=oQ^I078jQBfy(Wx9u}asHmi&2;aQyEg&RlSIsg zW1`HC3o&Mzzt5(=sO5(Aw$PYXWPn3xnSMLS>U zHhH5!7o^fI`1#J>yFY}Wcd%&o7!*w%gW@8gE>}!>7gl%eeQALbKG(%wkuai5h(@rD zaijGlPIN#Fb!25Jzq%-q^S!)Rp(fJ7)>1f;z15k4CQ3BDy&*LWi%X& zi#6sT9Zgb+}6<96tYlo4>nsJ3e(80${`(#WSd|YYOtZ6j~1u-JTXqFm(t)#*>xA%2?d8LzOe;uYqi}P+LV@%Xdq-v zx|W*ylb^n~zJC1Wj@M0`lQ1a@-{&|DuFLieS1x~0hre`uTQ@{=x}sdaeBs>>|MX9; zZy!m3(apNL?;wCbeD}jeASrL|iB>MAor0^iv^%aYTlkUg3k=gsb@9-uK-I3NeFn-S zLuTD8?mYE&4&h4|s{s*Tot$z63sW+6 zU4IoQF?kHoypI8OJ=gSUyj7YC*&V*J0#~P5KvoyCrc%SG&0m^&?UvVoH;8Jr%22`c z@9$~|cXVvq&*o|b5yHdA>L%AG-8|l54AK~SaaSQ-Kg8$95!56* zQA0(oc}_DtJt;Hyp2p)~dsB{+;VMZ;7__p-1(bIZ2E?04DRb95Lz6p$A&Wv{!!NYN#jNOfHdhj6-} z7U$gqEdHj}!(Ht|Rkf?FsxEUI;0`EGc({KgoMHdIgGWu%u=wJ_ombN|)lY8<9&_9i z617YxBoK-49zg_t9x zeX=dYXbsOtNRXOK4;h8Hu!!mqR6aL)k)dl$mu_fA2a9UD@OCS9Kdxy~!ID!S$_%!7wVm$Jct;X71{$Z7GPnM@w`lH=pn5 z7*PZ@F*TZ%ikZi7#;BUx4A5kGGrF4FCQt{x?^p|Ddfg6LC^2736czJg;Trzs_Wih3 zWeCMV35RsLU~)FuaE9LpeurHCz&_|J#61`i#`>U-S9x^uJJ@d$?B%Lt`CdDj|FmPV zH-W|Zd|T*-3-9XE9*SWYt-Q^J`pHE59dr2Ms-#18M`zn-Q7nI=(EiVCB{+`qtpL zq&w)nm@!z$l_~B>^tiP{O}VRvXDA*LLSiVg?>W+F%8H=ZLAUf!LxL)^&tTHW44VLD z2+on;ijhBlhD0~&Wk?BW;zL4sG$X%L`OR=A^O>Hi?aTE#m5K!^%MDQNSm>gXts$%_ z+SPqqOolpsFF#mqLz%j)L~Nr4{Uv;Ept+`4SsEQc4~E-w04f!=oPz3=^R4{K!AP$0 z#NGFjj^t=DZ*U}B*u>?^NcbIWLNPMso^QJ764nwm%f2MJri`uOrTAi#4(v`eQ3b)hSrE2x|hr7pmNZtPbP#p|g{-#udx4yrX>m%=0Kd0dQDeQ=NaU4{_B z_0C_Fk7aX;M>P`d)(;vA>JnGnMSUm0Q9&&3g0U!t1OxKsw?F@G3eDjU9E_v(QUw0HDnlnV8-&7u9!f=-wdC@ zAZ)8g{+5a$XFFZ^Btw^MtisT^deJXo>CVKBdtp~!yBkkqMOL{w-aXvAu^;zTT-(bi zmf;Ce@`9YpQ5AyD36_%$^5Ju5eQjq#^7LaFF2#z*$XX;$=`qi5jWBP*tsW#`XZQjS zRO0;y85LBp2W->={lu)~3m<}C#nI<>R7DxN=@AY|L!jHzA7HEL92w1(`mb}%Zf<@b zhIW%7N{>TP37~}|!0&csT;ATYbjx(@ZC%&%z+b{Y5_l!tp)#a1QQYmwInM+g>S%p_ z$3m;DHd>kARGr`MHNuKEPh)#rH+^uETC&|C7!2a(o^~JxkR`1lxXF$R&zsZ&rVBdZ z_qY=y1H*<^0_s7>3~pCpDZ?~aOg@8gPOJ-yie^-Z@Vbnnwnh(gx?dGPB|$BFM?zHL zj_!rfE#R2mI|KiT=9et%4uC8k@$4j;uc(#Xt)h!L;c$ZGbwjqgVx_47i60#6Y zX|RBu&6WD9qg*qGFJVA+)t^Zm(xEM4t0{bgyaQYUah4arka)c>wK(l**ogE(>uJ!WDbv=rbuv zL8C_D1Nnc{ICgt$4si&5Vhn*^(5Po4ie|Y51UBAX)bO&aCX^jD)|c#q+DbIkppVd@b6sbY@Dj+0Ld8dkZ(_&CnJaR1ihRBlfk>{08GUjzvkhtET#^ z>hO=zROnGb+IKxpJL2@}hGp}Nj?+Z5duRwXp&C><)na>1!bn@1Ix&fyT2h~^nG~!$ zDHQl(Y!V zSAFmSs|nX>SN)D+qy7pQ%uv?mL=tNRmj>qNHn$SBw%DPp19bd5W~2|xZ&Aoo6L+4S zmGC3K3#V&*#l6XsA)MK(2`U4sp{?P{21y+y?lY`02lgO+P=obxkfIxJk5NivNMRch z*vt=RES}{t99J!-;nIDw$n^Zxwcp6f#8unJdh1742#XkcpP9#WYGB|SH9S~FRUcQ$ z>n{x0uj<aqX1Y;Q6RbztpbFymvmo;s@;nSVJI)==0(t3-(zL=pvF$@ZcVV%21wmptfJp+>wK z5dPLL%U+o?r@s;G8Z-2IA%-S;sfJ%*O%E+tgjTampKyKO6YW!(dKi=~F8n}|fRM1M zkT3$*wY}Xq*DCjFpr6QB;4^k8B$Mk3KYwzYj*@o|2IepUZBk45Y!B%gB+KpC-~;eGm#bLlgY{T6v9c7J~{vaIK$0?d~461ai4+{dO~IpgBubK%C;L z-?t=6aobA`R)cg6g@B6yRKvDkHQvO15tzLvO+>&PLb&-m5ZX=^0xNx zNCb)fhMM+rZBq}6=O3@{>u^sGja{K0kYaW%33}tFJ+tWj!}^u_Kt_O}^;@Z`0f2*VmO8C}`lu-x?CHQM+L$)YwO||rk&^rt120mxH{po%yv`$zn zZv?og!BiV=YNvYlW7)9pjbfPuQLDv>L$c}l%V;_$`E`vnLlIlT;gcsNF&tp7Z$npf znv~7rxtMEvkzmIrxwz@6s@PH!kBey|#wQG10b;1CycT1h-y3oev1emKu52G$yg5vW zjc-FR9~cgF__@}E%oJ5&$k2@nT@5N%16AB$JD)2<@ADFR&bxUci4n%XQX1gT0uEGD)%7hFB^8n`|k(gR}SwE>**vUXNtbJ&gcjlDsyj64Ez)jfRjbfYYO5myK?AfSmEkHW zH9#=$^s2T&DjgIvPbA61T?xz+UKx%=$PNiOkjRLJli^5!ikJWd@cdp29uW&6LAq}* zc$0P>6XeEAe!Io4t+Hf9lnsYWz}{~A2Hvb~MTW9WB?&6L#_+7eWS8(LZZ<|3ZCvk@ z3z&jm^x$X`X}s@&F)J(mW{)m_3!`{8K?R+BpNyZTO}-NTJ((}B=$(z+tej|+1ACN6fcY@nb(6R}B zKS2qjz9o)7X*u5*&mU27kL!KXj{oS;&kxs=>&)S!+PG=&0?v4xvS6l!9kN2Et%3vI%L&qDLUJ^T&BG3g2QA{CSX?H&-##sXWyEG}NX(p! zb~H+k3+ue55F4!hk+xJl=Ob_7Mu}Yx??s=HD^itZn%?xmwNfu}6VT^v==Md4HT7Vd zD~=Z3KfWoMdSlp69%`PCW%@)9qrvv0UBPp40Qr`mA$TE7O+!#BB3>Rtn9_p6X>rCt z4l$s{e2itdA)&fBd{;$%2x~7H-)7!ib%SqVK^sED;4*k&4s@qSE`T*cC2Xk?&pGoS9 z=PE)Ry1vb^`vJtbO+dnYHhi2#j`UjxynCTl#NUJX%UsVbx`F#NOWyoWX>2`yqY{EH z@Q#F>WA}8ih)ayKe3e#v>5@X?wjZx(pexefFa$cALY!Y70y1N@@Q~ZlRLp6?uENnp zh++C{2}oW|b$VZs>+$to1C3(jXCvC!wF=d6xuvy?efU-vrwykxNCu+oLj6`qMfd#< zq>c)`{bGk()B~`b?Z^{IBD8I$HK85!d(XvINwvwg3cfkRN})|h#_sI8XDwS>*DZ1t9L4k%VeOH4ZHC7gOY~-*K4UpSU*Ggs9D@uJMyS zDRdxG_WfdO5LTJE!bt|g0GoZX15m=0I~bxlA#}le1J?cInyzyqbQCZ3qBnoFv8T)F zFZ1yiG9KP~U{8{|5^u;m38ZTnA1P%YV&gCRZU*`Bp?IL)u2q@Avb42TF~0)X6YPNZ zTD)j)CY5AzAhk4u$)Yp7Mzd*r-NH)vo-QBME@B4l#u&OrY98*&?kGkrGwI9KwanQH0M@;%tnPbHc;|N|m7Fz`jnWw0#D6-A!?GNe; zx8h;w1Ek?G>4{Lc&CEM`=*-e_oK=gDd}*b837FP~SwFt2wbcL??+75{u`s-)*5ebpr%~%3+o|qi zm53@ntR1D5TjCAS5^eJ7O^-P6PCS*dsw0Z)axx=T%|_^CzLJ^1W@1WNlMPa0Y=X!? z1&vcgKao27EP)pZ=o>eR=o>eR$SsDx*js%7mXO8A4sRW&)8qKf|{fZc~dp6W2>MmTJC*V8>Wct zqYTU?#`FZX*H5EIE8z@TBikl<1&H!oyH&r%M~81*$5CEt6m{spNquBX$L@wtD~^nF zO{&FO?+_TOz=1+C1r`uQ5Q(JKud(cQ-&!X%heQ^2JYQ2qJE{>D+$9a^>~;lh_5tmg zPS42IWUztydEw}HKDt)J!KnSMJ?3uemcw7`k*Pr2K4q_4_HcWA)#4J5YLGI5pNS40 z!(dHLplC*%X#zV6iyG^4otk9+T7(+uA?*tDyj1|`J_1x{=q`O-Y89f{oWB04%~SlR z!Gzk0nik((`c#7&{`$q7#7;^L-}`d(JUPBIv1kHES8;MR)8fs!Yqtyt-&e2P{o5jk zB#Om5gtWpdoH6tu@qS*HcmcQ_zR+E&Q0IASSk6?gBp^e`h&co!(mneWK7 zZ0ndDCunPU{mVY2*b3iwo!h@VF86RVV(U^0;(hortF)F4fKGm@(VmmCdLs&!g-92t zTZ8`%ASh)BY<)qP}CQmuM5_X)<3u`cn5Ye~mh_u^WSEPAzy z6B!0uG+RCC;Rw_iFuv||WIM}p7S?{H1}P(TR6#Zj`raM?5i!w4dp3V*G~E7^8{2ULPZT(l*cpDrjHgcbT?zK?CyWDvD=M9Mx@tAhS3-H^5R)3GzU6%rCWS%Z*0b$ zCt%oS?ftR7w|^HXDE1nZl3%Y!zCvx|qptsZCMf&<)tyP7>Qgf?LNX*Qjq05PB0sBX zukD3J>Y8-2TXM{ax~8!GNgCN6#+d}DY8XySLs_8hwY?z-G3tVj)#%jQB_`=+B2-O- z9u4W&?g@L;^ozRm>6hE_iMjRC$lR8ewh5GkLhK1thNJ!8ZO=qplj$Jzvgki%ymJ5e zp4Q5JIap(|**Mz%`S$&ojW~MARS5pjY$zFrDjmMl2iQ9{*t(g&86l}6Iu)T;Saxgt z!Tx^z)E)RbmLAK-af8a`V6~z<@Ri;&IhI=QkkBAM?Igi5Q5{&){X0&;xi#2II5E_@ zO)B9Ol9R|o8zm*_i|O?jFhpoEKq<_`b&!_0CNV%0YsWwb!*=RVX@3-`J0qh84)e)aa5RolQJA9VBY9$XHjkXHbUUZ6U3BBCWzqn8Is&*sBaqIb zWnM{|qSY}z^%D+y;M+nrc2NqBIP_B^b*k+@%yEG2_wpWeA<0btYZb$wXEE-%lE*KE zW>eWC`OY^8ZY(`s0R-u_+@mIAmUzA>z0S%dozLSUu@r!A3OzUJ?*Y(8S`zG zLntM=1Z@DA1_m7SDUYae14B?`)zISa&G%;a9kyWGLy6kc@b{s60B29hmDRXc8OD_K zo3sbj5az<}eMR=rQDj#wx$Ql72dWX?kB&SjcaApq4|jLINC6rm!ye-h#*1$Vgw5en zx{D!f4pB#OC)W@Z<(F|zBPLoHzIa27EQUYtUs8F%Q%pJFlb9++uN+O`Q-Dx0E|C_W z9V%i$4uNdX0MHcn-y)=9^t%tB)8Qq^Q)qpHOC!KWj^9L9Ds3e*o#(xuZ7)OZOb1 zC??kHc3e#N+D-srI{_m%4s>-vmr@i+jB$9Xkn=Bl+iT;eZgkwFOQ1%a7B3r|<+-Gn zknJu%mKYuO$hQ%__klg~8rL6n5iX@N%UYOBgf<=)kT= zHD1bS7z^&IM(XjtOKI&76hy<&oZQeZ+WsM5Ad{3FeSvlU0#=1wDNHqL1jzHd zj=rL+>U49`uFou$)q2Zgl%3y{p5H#vl_6MUiqv}VE5SFu96n=#NsG9%zqdTE`7eue zXT~$6rh{FMHDAm*l)yGbmWJ^yzdd91-cIOmM%2q-XJV+ym#<}724W16y(xAJC(sy| zu*_-iNXJ2SlXXfIT9jf#4UCA@hkaUb$Yq1BC6tyaR$6Y^)biJF+saW-EGN_^jcmkf z+cixP-DDrFYRw6zuQTBFTeV=aeJqJ(xM?Sla10@h`g?I750P?a+=WZ%pnejr$OgF1==9^Bz)tbg{U>; zgt`&!@Ae?O!>gaMUFq+(;2qvZ%82D9^U{WHo%iY;0`+!=jLS!PhIniXLtuyN7&dmR z(Ru*Oo%{YAY)G(~#fxoRs<&Mij?C@JbRuVWHELCa=oaNaD9l`5bCmK)UWr`pgm@GL z%X?6(w;ZVGnL$SG^W2s&n;b%`M|gByJ9I`;)PD$e<(-2ra3cJT={p)uUq+&I7 ziN@qrEG};!8`4bQVpEzB$6*(vL_+{{7y_=54VVEG&H^KdqByh$ml{%uhgrKAAXhdH zzu34fN2$1zTn{)@1wh9l*~PO1_5?TtMF@v)mpgvntm52oCsZ6Xmj%Il7crJ$VH*m$ zB{5+LAi!Ir96(xTaVN1E`C{y`t*+CE%}FuP8I^fo7$@4~uZlWDxL!l!$WIwUCFf3G zf7$iI-{s{yWxMFgma+5p4TlUIkDbMYeeL;X7mhyr_pD6S@{o5_&y9a{rmxG8u zE)UA5DuJ@fOXHXw!H!CK`s?z?<@cqme-h=ME0?0Ay>eWBRL&JcUE4?H&EnK=MoiZE zk)ZFWjC18`l$mXI`X4Ih&9by|N$sL#he~&^e5sUs`nna6J8I*x{@W4kwxApOH}3y( zDeqrU|Mu19Otr7@mQrpCx~GzMl=rU6r>vcTDc6pBa9Pkz!Kwd&@?43sz7TY`+)!%{ zqvc;JKFj=4akM6DBX5pJ8*j#_j-c9iQajE?DLc_FYTPORQ1xvUweQ_emFrlg9L5aq z4fRnk<8xQ(cl9L?MSbfoKh3eOz18ns&GN_kyAy2=e7HK_+sjHp-Y-?oJ*7X6FGh(` z-dEglVHUxJb4s_Zu@Y`vnJ?{@Mus}+0qtU3Zgn-t14V5GXSDN5A3tdI=V&qt^eXF| z=2<4+*EdEj9OF&)XjxV`H>>!45 zI#L|JXNdia0$&F01lu8mw*onrz&OU&7-_KBr0B31noFa%k^pf!Qu@MT; z$*-R9ja?}P3XlE-BSJcG$P;E zK++yBBBNO=(TJY4x_p+CO8U^XC-NlHexW{@9A_@0V%Dde&+MtTU?V?HhQh4eQac!x zWJqq+-hkqi48og;m20j4C-=B5rku^zKI+=gIMk)}@c+1?PdRvwn((%&H2lJ_65(eT z)KpffuD9&cgJu^5Z;jrJwF`34cm@!vOA1zfb{pObmp#{UMao)LT964|Lbsuj3^e>1 zS_D<615i=o6J1>kG(P#%a#{K|I!G5FTRrnOvFc~;#?T$7c9$V=o5~Abc<9^(IyLTM z4%4>M5la{*f2c3IcuQaV!k{spECv>OjLcsMStmBSyLO~q;McFNcc8b1TBVtLJnv~MCN*wCM5B|5-P0B%UG-#DYW%@`Yfq=j@Pqk$bG^)ZL7JKV zz1+hfXur^CJ}BiK+CLq!dm10sGG)01O;srG8Uh-oT7U>|f%RN5A28Wt3_$1d@NZJK zn5zz4M#4gtqDoK`oL{SrfYyGdFz8^}1mXgU+}6~xs*`;jsSKtOAp-c{mvr)VtQE>b zpP*B}M~d0V7WMMfb;bTh|DemBz^QiP4$@*eOl!>=(PPj{QUcQC-Mcg+J#IxWv+O>H zQJkLNjh?1nGu5>$*ITCcU^5Pk0HddR-?*vJR{=qUNVeUkiv?MpQp)Ga0||iTOQU?T zrAgLbp1q+oEHdep&q6}JQ2TC6OjuPeW}`gwx#ABMD$lm%U7ls8;iW3~>1#@PODQ1~ zphS5&bFma?;=8DUQDsEsV^F(ZV2_M`Tt!dv>!;t=&U zK`Su@)<+*UHJ)f?9*3ppS%AsAwTRvXe-S}pp{+O5_LT23Lq{3|Fr5({M)_+N73|dg z?m5X{ikyBDZEJj}XR>D2eXsq^!lQSv=xM$E$SghlTc)M2vS)clpC*Z6HbCBnhWHyK zJX=*}XXX)R#mE@rNi(-V(O7!;?;fvVPHlXGljc}H-grE2BmcwWHS($^A0mPN!E%GZ zfHHq)4gTn=>SoMycv93kC-X>C=i$T_d(R6BYBN(yZ_`^ytI1xb>9MCTrM$%QNfW`1 zT4Fh+4WB6e1CGNI@=b{}6Hb90lPKCVE98qom?+=t z*TJ~FvI&#h2&P3oo7t#?aU7SkxbAvI$T@RVP2{1ZGRnTPtM=UPOuj3c+r*dhf=8=k zNUtCRnyoQ2F!PS#eFYVB>u9Ih>gP&l0qch9`o2UF{={CEx)XGae4h(B1%w~+e@uU|BWHx)NjpK^SvtjavRx`8)KD?&CxAa|J zw+IWzTr|7dP+#6e%YjzqSpQc2+>U>&RaW&K)ly#OH@SLCQ+{w-9j0%|Xv^lX?Z^s{7$&N-2M-hhOZxXrM%~sJqP?9eMi5BQ0u{aUC-Wg&xTZO zT;3a%+}ihE*S_~OlG)bxO0;z-DMn@pMgAcaJsd*ge0_=Za_JfR6YY8%8f4jsZ6UUE zY^P}w(sFRhW35oBof7SGGru3cJ;^BX6 zi^QTIESC=1J`WQ_xUsHm@;+udC_A?#%$$>f5ap=}YcwnKkIP=sbeQq9)LzuN{WPw< zk$gmbTEQZ1RH{7upHJ?FDe!^#IufJp`fxZ%BEPMB6l)R*4`UcG0%21r*1Y}Y^o z7fU`%=gM~L!{s_W9(J3)k?&Gc+0l?&dO)tq3G3T&uFSPW%rTkfqOlc`9rU)9 z43XYU4S@z0@4qIx2%l+H!iLubbu52~lZXNyQj1$DS}fOvIQ1_`g@H-vJ2+*W2P)gP zM!X0xx%A4y7ZMOHCNYt{1!-J90zRTPlkN29W1y`xLK5t$08{tQ1B4}do zAn#_5Yx*`WO;Wz&`DjiUSSgwy$7oG*yt^Wl-c(O^f>&OgnUjS)?~L=Thzwwx*pBT9 zoO>2>yfx0@y%RelP1^JJIA!+u#IZRc{mHX*RXx04=4+W5pYwC+86~-VF7|UWGM@?) zFukMs<{FsvSNngBc+IzpIYnE9YuQR^S#?s>EL6g}J8OpbBTeS6l7P zcCexmx4mIrmv8aN3e1bF5HHQ<|5+>lrbB8!p;XR|C;)^p;1J#ffXWW zFk;O?@P^9AmLeMW{x~1Iyl2Suyu~^;4zWa*73PhV4fFN9S{O*xvTgb?2e*|9{VZ)i zXtw`VYe+8ZwoH4o@0^jNH^yLQ%LN7h|He(zvSqgllIpE`J6q{oP1FQYzoT0Ahow=z zZhh$&ZBA-RSSi<1HfU!_y3Yaon=*>+g1LzSgv3na%j((cw(to9?um!n@wL=7G0TVl zv=uex^k7$Vh3ph`3%h$ z;s4?EOe?AcGGGJVx$^p8D4HJ?2m&LLrsl7usuCKT2=FKQI)nm#-&YE-ubHE=$wqq8 z{E5LDc98LTgX>8Fr;y)x5%T8wukJ*&R;+OyD+iX9+;6H}WHJx9>Ck zgUvAUO%2KZF}bWnCYKfC_LvaNO`C|o=lwV=qF5_2$MTHjcBW7CPqTq614YTJuhrO( z9LU&449~L@*M-psN}Zer1;WKce^Dsf3TTDq((iRd6c2{Zbd>#^wg;(3{JIU*cx|56 zhJM|i+QqlpFl|d}rw9G&Yh)?iLKq~h8I~6;&nF_Z9#2OGeYGEj%<+zp5my2bYiXzT zH2Idbcccg;Q`3`H_7hL+`+cuhg4}1HE^GGK)p2coy7EkFBIUXKLL(_J^&zwqbd&Pk zIVk!{d0`q;9{!K5>lcDxBD%B5iLUHHo=$11O{~pq?s;j{@D{z8r*42`ObN99reK>L zx&5(nv6+Zz4EqYiJPl(O%TXE5i`!X%fCIw)4r&?DkfjH$)pHwlX#Q|88(Pj)hGB1h z=#fjNwJten)U>CGRvokG2dtN(EFC{?mmtxQNyzS$yFqvuCJQ5&G8h<|YOU`qgHQP} zU=RPde#Dya_w6@(I)+Fd$Vy;Ek{VO$!@x7-p2RflEEeq^jaRK}oel0k?ToAlk)VA| zy8b8_G-49-#2z5KfLQi=!Rh41F?8Yt*_?$4ntBJ8!J(c+;0`T2*&Ho^ww#64EZuEr zu@(%rm(3STnd0cUmYg(usM1zk&~nl-)nS|XYNQdYOxkJbzU6JSd+D9l);XOxYiH!K zwZ9|hwq@C6@aieQYK&)B2MGPV zuePQRgQNP?Kz&;MOIJ=V9}-UaDT1C_&R4CR9uFE0o$h1YH9oEf<}>Q!5(b-$W7M7tE|tgsJaBqtU%m zG_R5%{LrYoK?xcvVc+xm&0Xg4h6gj@0~Avi>(;I>R5H_mOSXj`QLO)>V-{H*MlysA z%Y8QQWfm~lP7W;Qd-^xV+(j9pHQ=7oPT5v6J>#7(foc$ru@VV<3-9z0|N0Gx++C0@21U6+?YBY^9S^(*doxH&?!UFhF${AO4a=e(0k%2{wNBDvGW>`E>m=K@&xUOFKqYyI zI8b7u%^v5WB=DXqp;ux_&0SLZ8OFZX8=CbcL+IGlro{4*3HWwwfoBOe0Z_L^p0uUd zFvrHcWr!jhe}De1Jaa+b1D|M0%6FbC|C#<0E>AtDuYf)!m=3Je{n@8VDL=ld5+G5u zKNnd)f1p>NCJp`{>6}%QyOEAy4OUUnSs*j$UPs;hm-FXjn4nikMB@{fXhy&gBAG#~ zN`1X2we6PD+u}pr#v}G~t?B0>*JfCqZP&wpewM1Hj`U1=&y^a#19k1_F&zYGw}+{( zF$cB0fbzMj6u;B&SL#OZ!1$?P3|@;}R3TVG9`?6`a^}>sP=L=*nMGTaaBZM>me{#P znuBZVWXEtT4CksSZ7y3E!AETotf_qZp3Bpd#ZuVPQm{-hp=OUTp*ESz$m8-;zOovB zO6m7n+b*hAM?yN5cWdFD+A7~-GG}C>57Yx;*b8H@4`H$dj31C63>qm3v61%ATE+Iq z#&Ba}Aq62e%x6YBge9_q=9=?Z&FHofK32ILz-?OutY#X$tF~CM-BS1F>U^Rh=+NR) z)WoD&D_~OTpG8ROx0N}EPy_f%8$al$$Ad-pmBg%azQs;aE(LM82~({d^4A`fx;*^b zmSl`4Zty3nxIc!lxGGueR^VAZy_Rdez+@h8tlWdS8fb8GK4gaS@ZZCN^@f77!Ih?T z``d1;FIai}#s)X+yn3gzvN(Vzcify6Qs!O#3+lTu6%DYFU=C~MB`f9S@5`qYj7Csn zQE$n|Naqrs>!p+Olpt?3PQ5bJF>POY^DL=^TPyvHptgAg=Xe(D-&o&7N#XKQL%r3R z6yx$eGo0s!=zxYO8I9zdz%dF&T#Ioik?q`=TK&>oO=azpaLk^wIC-KTCCyrFdz*)3 zh4A%M({dzA=dl4_Zr%^|jQMw4?=zm3Yh0df;qqpVD{C4Sm#Z9BnCIctuV>q=m20i! zIVNYOlvEh@c0WcERXtDHb0#V4Do_0*Eyus*Y&PA1l&3lA_vIhOnQgRYJ2U@CgJ*9A z#9Eq+#VhsGmL94Cy*SibcNw5=qa#1k!Uts#D5rP&^yQ89!#0VHd*(z!f_+d1K@6F} z<)_q^=;l?)#ujGo+o+Ob8u*RhrzLEqk z@u_b~>BOg&hq?Dg4CEQSOLfec51ZtO&Ew<-s~~x7g}B7h$>e?AxdpS>2Jp_S!3J@t z2%`s)g@pPTrrlS$n_(D(&X&>B2Sx-zctiFU^50WwUSGDWX8tt$QmYwO+$GUj;aXi| zCJ9AtV>oSpkHNV;q)~mj2^`oMQ$XoQd$AX{)DNucxLKOHOj`SXV^pVMrs>9~qPw5y zzy3(VX}J=gp9GiH@t`f95#3k|5h6YMY9XnSEm=emi=xu1#@vQH@uBesU}rkN_V_*aZd8vE!4vl2UYEbsBU`N|W%b2_4C} zE(As1rz<`x1L>SwoaNm{Xl%!I*VCq!8#@m=SET;TbK5#d)3o!uW*fS#?6wgIR#>HX zQcU$i8;IQ6UaO~97OSv#_?{6)x7AYKZoN4RY3hmev=wusm7`+xDbKsM^*XYJE6Z$@ z?AIvGL*-&hj0)*ao701=F=yy@$E-a5Du(H|GOO+n@^{1VRt?|K_u-;C}-5eW;f!V&ykn_<~Kh(c>_3u6Xdtd+lME^d}zdzN#4<&u{(p1|9%0X^x3O>{8&7$@%Fc$rg zmJe>Kjp)&E#fF@aY9`B+f0_$Pem>uunh;Ou(o>q6r@k&_18HVlI^_K8nD#W)pn)cR zAU4s0-oR@tHRlqszG@;U!vCwe8h#Yz+rr;k^?3EE?DgwWcd{86*=ZxgEH}sBeq3{2 z(n#fzEz;J&IAZCg?H-ApeSQ`Xn^;xSeHLSy9SF-aX+tSb={WdPf24mu*1u=;PX_>> z{*}rX_0s`E?uz@Bz9RgTU{8N7nC2;dId1qhhYp`+nG^b>2>rcaFdR+fZpuji+N#>y z+dXLt;-qEPoY%BYoU8wH7gwvM=xyTXAxl4(5YSv3DMt@O@%wJD^q*i00 zDwkOItiE>P&xWuI9S!<#FOUAVy+v70zCGW;(`RXOv8-Hy5GtEzk>1e_=z($68V5B3 zYj&d9nqH=+Wup0QneO7;H$qM3S3^B$Qk=XJ_~v9!LL6k|e%Hf@)sKc6!P_C4z7 zvl$54glu9~URM+t@U%BQmu~hgW$tVt0DtX8Gbfkl9$9Pgc$aPI2Tk&)1-Dgd;#HH7 zs|fX$?USi1vu=JAs}1AkM>=5p_w_Fh;r@bIVm$g=!YRKotL0g|?Qxcio;5>vPA-dC zg4)uO<~I-C^qyu(2bX0Z!2$A0tfK46b+7zIpTMuMQ4-Ole4YnjLxBJs$q;Uupn$MUEIU55=(%a2!rCDWz2V zz2ttC2?lC9GM$mYgq=xfOLr=mS&$;l_b1}I#Hfe=?%Qk_7O?&XP%52kY&HpMmm^H$ z#+>nf3>mWC+uZOk{wePGou3qr@_z(>t*?PJ^{_m{#v3%P#75AMBn|n$--~Wln)WOg z8nde8x$qqL+;8c{pG1n*Z(-5P31bnaWF@%XbKo5bVc7S66@D}iB>8=$ zP2e{2lKP%)aphO5D&4WZajTcD!R(e6K8+MW%kl_3Gm}(uykw;#JU^*-{n2&x?R@O| zp85w`Qz3gi3;w?z|CR5s8p>0j>Y|H0#`d;sgjcl!=P%}14m+zZ)_DGxny;&xCl1Jc zsWK%04oBzu%RQDp|2S}NJLZ%T>3Pz1jhA@_>xEb}o$Up!2*_CW;OfI`!kQb}L0pyP zMinNm3l*tl)k%wrktv=pt#_JEhjPK$LL|L0?@JL7nO-dnzR zGUqODEUT^KGwNWqJ&WMrF<-AVKVmStrHI%!$7S45|EBUoquNT*ZOV>1? zH}qeHy)d2S@*MeZM9Pc8Ip+I%lypO7t|~?)J-4QEZVG;Z&`V&+ioSoL-|O*3y#uy9 z|8qfU6Z)g}ieLIn;cL+*+OisPw6k6YtDNw>4UOT?H6y#4LoDfW3@gfFmMp)QS6J7^ zy~WWj8jF5LX*YBc3(I!2n_7GsXx_a9(&^*w?py)1E-7fyJ3Y;H!dFsdI#w2V6q@8O7yAhngvLW56PN5l)|cQ^)(VmS z*|TPxtq+Q3%DOY90%t2(d7oiNnf=zHD`HzKrWg&a_*7H^EW9dAVfL>H!ey%9*{7A( zl&3F>7fTA!@5jQv@-*`-x~O0Bm#5Le_TraZ<>^ZbYY$hy*Y#g{`m%Z^`k>z%!k+Rp znuuDbU$8b;C%a>q$R#7mEf-wCf&xCJD4854IqTwaH}zinL-X;#j)HheInXzxnN}`5 z+7405_beR$wv3s-(RU|>J!{Dg`xBQtITfj$M*Y&|)wVXny?r9MJO?f%W|rs2)QlW? zPg!anRtm6N?WQd-LzZ|kt+Ijss*4`$;>wKT>lBaewh?gLVfrqDp!H6O{wY zabxFHgj_~#$jZZi&CJg25Ugkv*cM5hCyP&Id0SY2EJ=2J+`+dH(u~V$CRT}QIiIOM zR(7*5&NS->S=&jS>AG;#cF0aj?E}2nw33@G`U8W_;}n)883A8d-PQTPIfXD!{)1n|F)0MX%ozNt0vNpAM${6O5WU=nkX5w4w@O;A>rA-aT&mD{p%3}NL@$_GQ zJ9F@OO)^2@sPd#aFK~(qTKB2`K|adQ#%2fmMx^MnEP(+Mf_jK(gL4so^Th}W3eO^n zLl0$Md8vIvGg(*nrF5@zYr<+Oam!+VQy~^&W4B(Ys}K7i)FVLBmliJp@`I*OU5dI{ z2#w|7G=qSTcn!;BO^0`McffKYKEQF@IjwN!aJtqepG&m!A)%XZoz;e67v1I;N$hg`&)nwp#L~(|Y0g&zcZ7 z*!n`WXAb(s_%G(9C=kRi?>2{teo?eefsk#GT7`cdc7@*;cKn->`m_#}?KRbjm9SY} zT6t}f+AzA4NWJFWJ%M%3erVB{v{SG@-(T0KJoe&%hB0%WPY_;%PQ52Ym-BFp)!NouZY!7wWKMN~iqkI?+v zj?KRw5dhy)h*|1k_R4cvxg(iNoRZ7;KGkf(zZbbdd5#McQqM0has?B(!K^Xb%Ka`q zB?Y3Yb?59HNe6V9p=x)15j+&Q@ml(S@!h?E>dNJ*yt$Hyx#*v(Vx2Sxus+RP76EJ=31oWlX zGur6IY(H~T)Znr#z-7WzpmnT9*1vTuR%z-hhz!iB*?M|tfHh;*G^Qi0N$3tM6nc^D zzP#L4L*Ksg^opo}DBPR=wU<`fVRBY-{YX@Jsm%v_GvK>&zmQ@ZJz_k{!~gPNN49RDy(P#3*0MWBr>A$X(o=8p}Aj$=xF^L!YR$^zgsWYHS0=-`_e- zj%(tWFX{z5awnc%(uKwKl~`iT%_c&m}+q zW`wy-9u3H~@j^8-Xn7u|X4+j|m@bv_k{4uum|m>%Wl$S5hv|Hzf0cnut;|qLPz3|M2IKWemt>>7!Pw@TA+!U0NHTa%=KE_} z8s+W9RH@x_1Z0|i>5Vbt^|HdC$1T~AO_ol14!UwH@J+3L8e%AN^n(4H|3WD_>Z5dD zacl$@&SJC#4;i=9DGPplGlm5y?nQ*a85cB^^}AeN)At{W zMPNu>dV_s|pJ{)dM=$Kk~<|+;$6@hjNDc$Sh74LT6f6VvO_LnJ7zoVAQTj1#**57yQ z?|b$4{rdYS_4kAN`=|ByL;pVfzrU~U{X`x6m0Sz&%7FW)D)x`1Z#(p{#FNYF`ddT% zg;6}Q#Q&oqem+07v^wU?c&nCjf2e`4KUGWk{kZ;KsK1w@jrTQ3mjm*Ferfgn@?k*k z>hC4}BbIOeyVQNt>ZNBstD7O^msp`rzNw*?Sm0NPHb!KGo<66=2&NLLMRex#u~25Q z4VnY`S{8xpAn2OrBcOrk{lzFLCv}pGHt;ruKHj)0&pY(qB>X2Ce(tWyYpES-sU03t zKR@0UD=%ai8wML?<-?n5C4GT#py2pWGdy}a9^;;rr+p~AJQ$BSH23f5(Dpw*z2^Vq z2ekCOz+EADG3Q9Jk1ra8L7HIIO$#`tF^eQ}(nxh9tSPKW^uf z)_Oy#*k@;{Z!*%;`c9)IUd0PE89Sn*N*3PDzAryPHcNSlAzXj6S;L(OpvGMlL>@0VXrTRLa=U zuzstZj^<^%KGlX`b=vb7JfRWKW1P1eE<%@Sv`ti&lo<}2`s)5f7y%K_rno!3^q`q( zmagXDP4mpJYVpI?^=DdBP%aypv&^<_HXgIC%+0=)k5?u} z(LMbGqoEon)^X*mb*!FV&gYL;&Y9cyi?fz{hB^Ax<} zoE3@0ayU9`e`pNd7Tg57h$9xic7;cIQ5qc7R#cf@UWflT502{!*&Kq-fN5QR9GB=l z`c6^+EQaJui}6^4w$5W~Ah=7*w#w3*x!pKjE8h>EVf|a?p7Tx6Y?RVlE%btRu=<^T z>3P-&bvUN1CFf+7!1ImC*#r8T;|On}N5~}OQpVdXgU^HIio}$s@!D(hO?Y-Wzf`948;VK&}`g|EX zb5u_s)1?cR4ZvgM2#lC)ALl%JWM~f%aEaP6k6PMd_RH#;W*#hL2H}FFV!gmGI11im zMdEDhLAvL7DgDcB#`5~g2`z9rd&*OOc5<4<_0V$~<7&D0&GL^i;5GGa@vshK;MJG) zYlYwZru8;#XC3qJH5o?}166};5Uj7;vMwNZA%C)}JYO7Ab8Nn+EVJy3Er%~X6zr`j zjDtK_?rk|h^<$+gr5yjkM0g{P!Cd)&=9+IlXSkH7WMqnUmX35ZO9yPHxNEuzCc`Oz6FAMW zgmx%LhpF4*ILi`S)&}0R8Ws@C($)M~t)_R3hul71J>`3DJm_^>CH6i$dJ6aP3bS`< zZh(Q|%>k%yCNc`Pe^!iF&0{zF{G(=JJo^9kaXa#;(f^ja^M;w4#RilXdzUabHd`}H zx^Sy? z?$Jl#ao3kqUSn^x#h+IQ)WcAZh^(i^9{$bQn>nrw&8RQxNgF*aheKB0CBRdFMwW;F z>g7ex89HxMiG^t?J-2E$p-H=y^^6l~Hn{R~RrtTw1pwCGKmpy*r;YFp$VH#uQYbv9mD0C(+Qv=M#`3xy80<;IN=A2r4I(3Y zFxg>sjarXl|G=}*FNHuELoYx$3WB=x z>Q)nfX(7f`HYpK+b(rMZqsz{l0g^JFTHdc8UEY{HOzGOGrN4SFMmahCl#iFku6;_J zPOW|8(S3XLqCT~T%}3X8mZf`Y9Z#JvORt**C$^70#lS^5Enc`OY=KCpECpdrwW*Q8 z+zjlW81eRk4$y8wq@O%L?J(ZM&oDCOip_0r)$y}$RtG2eTW`t-b_X!&X9c&oQ+xVB zpAw&A(-91n$nv>u=#ApsUzbq#K~JQaw=?FG2VUPYd9A;U>r>W)pbmw>XiHyUXjXnL zB|xF9O+xqL*x+lcqjWg}o!RsK%dz^PUzoGmS{RqTm`C*ZopHHIQCqoVvzT)H`0;X> zU)Upj=?$>jGHSemA5boi>VlDWL230|qQlzGf>4K8kEG?OS(Fo{{ahfX~QXYktv4VS>BI0(B z8$JWnr-}m-5C8WkX%Hw18Y0AIqo|J2pyy|6Tuc4vhSHsJOHa=e0`y9sCYjQa@XO1e zG8wwG*sVri*o`4Y49|ys36GU?ZAImPgWl<+mMN*XSc?+tQvo1^cN_CmM9&h%0p{Z8*R5Yb^({}_6*7@Ozx#2iu8&M z&)L}|%lgSUuU$%E9DRf@{m~F(+3&ScofXMAiCODv=XxR6S12H<7_p9F(<}x*F#_>P z;Q}*^$r0&#;@Rhi{P#4%3?_ErZZ6v18LhsLPf+Ume5uSG6wfMJ9s+xU@+XH^>0iIY z-Oi3YLD?4&D*Mu=Wk3h-Xte)QX8KR`3+aazbffwamp0O>+ltSP7Rt?*azxeZ@J*c; z;)>8r|I@PcDir=?9#MYK;xDL+$+fWbDhh`!KFNmrK9rZhb=TbXAj`99eo&9jLkZzcv}f!$Kcyd{ z4RLvP!w1${^T39BWGj^RRj%RVs=Uv|oBvYO@sd0X^2)R|9nx;`7nF*N(N^QCzL~VI zad8@#_il5UuCpJ}&&bq*{NW zzqF*K`Z&trQov6m4P~#$q*~sZua!#&-D2|4hVt%NQ~H88E|4p)&gWqiqRcnubG4wnlrfC`Fs^STG$G&zWqqpBe5IaBed}b* zG(Aneu=FYlTgqfJSSw6CodUG@e)Y^!0AV7l7+#EunfI@JB8ZQFF|Tte5cZ*KVAWha z5|3*~N{o~b{}s+KcEX1B`&4}rI!K{OKg+ghkv+5dBo=jR+-WQoA~tu|7Q_Y-NK0C` zTpE$e3)AIOUYtTSg)goMQMkR6`}IJ5!JZ%A$yuJW6Aolw7vg-^eQNGh!?3-=B*RRn z2R}k+dH<3|im}3_DcJ(4VHtBo5cX1@Lp;wrC(Aph)xfA?$j-Ybju?*@7oofuLOA(>5@w^F(#ZM7BBSk3?bk~Oh_<`I>LHf7m@_A zDbIFfTjeGR7jEbZCQ>yRkQEV!4)VQL(n9JtO+2afdSKjT`}hSy|1<*n0Zx-m!1 z@R3(g)4(&fS?rlb*m|=#84E4Qm{h>@!OY{pqTKcXpHWhMBL^v1#bxK@I=%K=-F>YG zD%)pHAWh?)1J{Fi%Rz68imK@&#$nOY)i8;b)Y~7j_pF|!=ldQW$uT%%Pdkj~!wWw2 zF+-}qhdmwlKJ?LJ&0Z5Pie?uQ>Jjx$!ECyR|7<*f*P}2bdV7yD%r=3dH;g+0+?xB@ zD*H$X3;Ffro$IAmoq%i#xrXP(+(@K+_=jM+AuP|tmscT?4PnoVgK{0Q3F!5*r27Zj zWya&Q4MF1|!qSBYY^d|ClJJF8TvuN_ra+Ov)htRU8ys$pn%oXyl%t`G%O9fxr z_U~eS<#mWIhG?|Gyey-ib+MS&jcMQn2OOwCgJ^ zPt1vJ)Uy2XnDiy0zoUO~>Lyphjc(nHcgL3={<8-7whM1dpW!z(Z*^co7}PGku-TS2 zR6XBSV9ybBX!ri4;p8W==o@7_-whMQ;GC3J-XAcfPMVB?qzxzOgvt;9#RZKRq;L@@ z|BjpT)ssy}4kW8J>FsHQ9_MPF9}h%%WgNx^+a_h{RrFb`P&Q|7g^jk0f2mJ>K33c< zU9WIjnM0~KPcM5&_x^Pu11$6;`^W4C!>?0^9$OS`(q**rGz!RR`olc|zS(hE5bRxP zaUR#MO^4x3z_j$ftz0$1YHuzBl)I|>dga0v8*P1GX)R`C(t zNhmxg7Spi))=i_IU5K)BSvMnm${&_a=%ocD>V=-Wq%yfki~OjCr{&gM%Si(P-+HNU zdyJ>-o=GvXeDBvP1Dv-520AFUMk-lU`ja@+bytukkdab6_hmRo?y+D`huE+REFAWRiNGU;c;ZHQANO1#stjuZ(U8Ri=~d$j-)@2Ea}Q> zjBnyHn8l43dDfQJGS7He+f)N}SQLg*$#LW+&>Xhd_Lv|@oYGrx& z-*V6zO$mVv5^%PRpbcGUBJ|?nY$Oy8w7bhrP3QV8owE(5NXKh8Vu`m>XaU`NpntTx zTxIF^>~o&gFvZwS97dw{l~11Iup#AKW;J?x^4uA*-9*taeFC2YHf{R3P} z!hot}l5WxpD{91|FNHN>Wvd&NtJ&jb`S}K=#T6=-)gJJkS!RWOB*wvY`fM&TmNrdT z<&wwNi&!?tP7h`Fg&o)@?`1OkRw&zOAs}G+WfK^RVLPR9pAiEF*(%R=eSi3Gjk0}$ z@%c%sOFo%unXOSqPyz&Kaw`;%-QB*ENd0s4{wO5AJevtWu=Wbd_%;$LN&onpwlCX5 z`D1=_di}Io^}qOi4VmR|PoJjiyKO3yAJJ#Ubd#L*+UTyhwd)!wq?w!uCJS^lZvmdA z8BL6YS^FXhmt^?ku{;VQ8?~5ro|7@3O4+O}3N54Od#z33xABijv@yrbkW2Fj(yBnC zUjRjufHUT)vDeZ>+Nt-dy82_)0KJeC6QKbL z5ED8pB~oA^G(at6Kmw$M#>xvik+U)&1ysU8XoN!Kj2$$S{Ql?M_o}){k3G9fR=;<@ z@44rmd+xdCo_ildWZ)J(`#3A!$7f6j{*i^hOb=Ez2>yvb2@5v`NyO9qoP`$hR$e;nq6mTR<*W>h+|b!0bx-xuW-b zuIS7nHz3-`aVat|eN8)By(Rie$uW`kK-%YOkJqxiULU2RWKsI<(0c9@y~e+yCH3sJ z@aI;nf`k)I?LNjuIWDOx#F?#AlTsa4J!Syey8@LoDPxZ4dci%&d;=f>N58H}fQ;pXs zDmrA>Or||A7*wiOvbn9F545M-N0tkh*G@xPZI0y1Y_X-Xyixcq!p3s`Bs%qe7wzY_ zq?Q|-NcVg0lkQAKDqXI2R>!*Lhb($;o?LYGmudORWUWj98(P_IbS3d5xApfa z-Fv9Vw&CvIRf|S0pN?{1{Oa=AYWaSF_8=rQy5P7{h)zFX;4^ktL_`Mqs6P4F z6+1PWJ@->shA1vQ2(vuYInJZqv{sJH1SH0~t|7~TxGO3V59@BydY|26cu=jP6D=M7 z6wW0K`~1{hGWtB=v!Sq}IWEWjaT1DCD`BUtbhB5bt=!N}@p;_?9NT+KOXVVQT(wp+ zUUw%%&}EA>ZgJ~Eac#cbKkkiRE+_qiVZ?}H<#IwZ@yexxsH|&bo_oTvC;I#vaQlp* zd|mm}7Z8#nyINXl`BM2#GHlxGZj~v__+1v#bIB*mZsqV*fz3#N{_j?^))*?=sUU?x z(umK-qOjaVx9r}L)?GG9>nWMp#~fp*n$En6IVS1zv)8vN{}fo(_K*JS+drbD!??6O zQ%l9u{L5=BiwFLgR_AW{Z6&2z#oSlY8*%+U++OXec#D4oQu3@y+GKU=^O0%Dr>tI| zWxVIOQ+Fth%~gdhSrQ6%eNIxJ&6Sm$_J+F};gz4S^fqpyom+b9+{|)zoRClP+}Z=f z#%o~6kE9Sx(C@k1e;XFkRG-YC6V`lB)oIT^7%yJY+s53`pBkn)KGa8ho3qzD`sx-r zVsGk}Lp0<;L&5bHwb#qvyH}Xz{W2xFAn$C`wINP8kkZF~TSEi#doIQ6B~FpB7^DsY zr&ED1JhTlaMY#mTlr1>9W#;K$ygtD%Cvz9op8yN4mHVxw{Z+TL-uAmvK**&Ns7f zcq;U_x9WG-kuJ^saxsbVuA0w(z1xP~eihSky-;_vW;tdw?K)P4K?z>cWI40^6mR=R zQP1UoyTO~($$mdZ*W^I#TkKDz+znJ>O{q=@x(pX>`nSiIV?bh`4`ibi#CNN1s4G|{5# z`WLe0s%e@{U{dhrZtI48)mn6n9u_p3Dzj8ax|=NN=uBy(D`xq4=}z7of!vj6U7=9? z!F94OSW0V~s-C*Nkk6JDD@#xdd-K3n{~@4#o~9jReI&Wh9V!uY)N$Nbhi;=JKocoTUwOjt=(H!)rM2|NucSjFm1q<);go>ZUQMGKwnIB{z#O%><8(<*u$v>bwA zr73R;$7k5xR(xtPC2jbh0i)#nhUCVNEA}2B5EfGQyCTiTFVKSJx-hL7T;^WBkpV;- zHQlBwjC2i?Zd<6f-um-l_XfJb$$oCQ591NB0_!jsSk?D<4#ZPfg3K5Cu_j?Vei@eYpowtRK=yi!JuK|SN0 z#d@JqiJGxu8)RJaWH_j`pv>=+>|%dCw_0%26!J5LaNf@%SLX)mxhQ@iYSlxb#90xS1qyEQjLET3Xgw7;l$NytGdOw=VxAK&D!^V9)OhO{WKI{sJ5op z&;0eizuwH(ROU;0ps+}PzbSvc0Bk}}zT~0r6WY@rBJ&QcTs(9go0VxK8Q@ghG1u@XY&&k+)8oV8|% z_P>{goarm(YyHJStuUA?vRg!kw2`C7@kaCCKkSj67?uKF`ST!Dy0}QsALg$8U~ryG}!V3xm=WdP-c{d+V5fWW(QGe_pi>?qGF$i2|1n);>%L3hwQ5}_fySH;ISuS zwW?5_5fIQVK_q&w;8(_IW*5#OueM@iWachHK)bRql#41-r3{r*iX621YNL*rlyX+* zZcYJBfd^X4+F#6%)doS<%#PX(#r`tyGARFfzS{gnDRtab><`Jkc1PfLD5oBW$GDpTap-E7yx9 za*x#%lr>|lo1g^zBnXg_f&QyDFBaD43+qL}$rZz=#!d4QJx~-W1TK=%ruw{jsZ{JM zjfw9H=$FLsaEP5a=L@yhY6H1^X|z<#_3r>J#~uv8JdCJ<#XrAlG~c&A zHww-1f1pg3=S$$fxk$amTtAEqK1CU4=7};?QiwWl z@GBPk%vsDahgVxKiz3>`qV{ELa-m@8KIUCw9-q0G;;2I*lOKdLSO$ot z3QQw}2zKV8P94B1qQA}?lvt>hhImpuKjX&n4`@|jr$58Fx>!UOQj>%MAs0M|O7Sj& zWrU&+E3l0UQKeiTFjiZ)RKUYDn7IY9i)1iPS_&{Q3Bn|_SezQ&Tm%>@2VgPZQkfyK zKEJ*oP8PM#!qcEFdy8{5KcpEeN2-VqNv5{ScpYgqNvMf4$44~;=N~81NVrn7d4zy4 zk64tFHW%T4Fxw(fs9_ZOEPlZ@dr8C|-%}jV=kttKpjMb-E?dkOE#$J~yXI*NzhWU* z#FwkHAF5m${E(PVPAGT?6cA!DVha|~KS=9FBpy7gk*sbg43>C^{v2watlggAA)5vjxz8z)PF=;Fha%1AO{BtBdo z&1Vy<$o{ZO(?~dskWr~HRYT;W8-;5`o=qLkr;Zm>$GKHDwK) zxg(07isBeFjEPM#$yW;NM)P6zPXVzA=G!XszGchieuf_atQCU3^PPdDl$rCSqqb|CA~Y)VQ4ZzfPBb}oW3 zV+(Rvk6u(MgflroSk`5X2>4QLX>FCG`N}%J#st$J#XlTlt|{ryON(Dr;qf7RF4^-* zdmg7>ydFvuJB%*|*vt*8S3~wnI_E8}oBLLKZm{Pa6@-QeE=Ar-sZs)5l?36Hw8Se^ zeD-a=Bb+qfp~vSYX-Ea!8x|z15n0#trM#NOVBN2)@c3Rs&SE65jIWrL;RvlVWT< zFNx|0hHLAj)9Yb2uUA`F0m0gEdIYj-p0-rHY3azw2$BYJ_h^9@7fPjakP@oxr^Wc= z`%@xlKW#0#f1PGVIN@<2!4^a5+n6%pt8*jE;vH<30*3WnV&OkwEeDIOwue4m)JS?I zoh2^;8}s7qoSIA)dc+5>)pV0M`E?Sj2F<2IjAtJ;p`4^P1uzXn0spYiJv zvz-tXx~&EVS%nZ}KNdc@YP+f?5TUWGh{YRVYR>Ka2{alAHc@M6%+7tRIH1MCb(%nS z&CGDv_)VJ%ULRqkKrxVwVoKH-RBCjhIhLO~%Lur+SY}2HPE`w0`*aw;UaEs<@bY~X zj@kk8wTWCDW?C$LI_vZJr(wj$KSkToSCYzuCK*oS10%&kHU6nJjkf{$Q)EDdK(cw7 zWAJsjY85Zg^Ciof{>#iB%URsr2YqWDA6TM9Y{a%u_*pIuNR^idFhoj`LUv8AF%@% z_;jCGL#5LEuZvX>{hqIqR)SS3_4Ta`tH%5I5&9z+=6mq4GU;{v*Uj{M27ctX1G@IQ z@EF@-zRwp-{EH8noEM)!*7rUcqjiQh$MaYplCJdRhz?h7fKcd!zh!ZOFPgRy`Ab{Av|p4GsHzvLgi>LxYW*OJUjmwa z`C6emf07?5k`%D&}^hH`llMF&ZrNV-#JXq`( zJyJuZLJh=?+@gt10t=msj)WlVWp}XHs8o!d94A8JnJ1A8U5LUcn-@Pxlq9#YeB4(S z$2F_Zu$mP^I*x?FbXh7%f{9=D)D@-(Y8H9KR|A>Yi(XHIDL5I(51?c-JtEVN&nXPE z&xuXUA1k1q3-e1T%1T?f)Egmy(`3xxQIZ$Q*_;8Y<{vHK6ZCqmDAmMwN>fh})mtv! z-h#yi%eNKF=rFF=rf7PMwqLc1jkX7v++mf?*WqWz@0za{!APkzHXy#n;$;9>@s)=4QOstG!Wb^LC~_4BM$+dHf6&k#zV1wS1k zN+=>UHW!f}03=GrgcEpSHJ)3`!a9IORO%eH3R52u!xn%;zv3VimPU$1Y%Z8fL!9hN zB4&7GuA1DUMRGFM&7$RKeA0*#9kkTYK^4uk9Y3y>t;L$E+5!eyQoIGs(aZ(N?Sdv> z{Pz18>&WKoS=lKN4k}p~pdML<%9wA;Hx)}+YUR|Q9%G1*0TV0V#Hu0fdq(Od$!Ge9 zZ&e+=N9yrbmnELpG(%gTlkua)0iGfNN?kGhG#$;nMbT)_S6knZ%u`A|_Il{|f^j=h z1~P@ghS*?j5h9z5%&}c$A|HUAWSx_eKaHB!Rc?}6OepYYc?_?OJ0HC9Y3Bd2ftpe& z*a@8FwsCQ-7vih5QbTl*ky=6JDcSanmX0-6zOYSBi7HW&(SR7z6LEaJdh8G|F` z5b57%Nn)bZrLmfckw4T7tiDISFO0!+Z4~2`QXcgqR6YTwv|LNJ%8{vU;&Y@x-_w0( zYMc1njS`o4r+GBEP>9c*HOUmGDOo&73d3bJF&}tMSuP-}j13s?d(9d?_n^QrxNKGU zaF(SSpSNbcCO(g50I`g8bg^`k zCI=(q(bdI4B4?$giJDiuLSj&Fs48EBLZitA>xPRZE#p}HCKn2;S@lbR=+X8Ii!8FG z8%ZwkTsKAVV3Mby@V-ZY?FK&JGf zhZ*uU`UwVpIoqtdT(#i@Pw-l`b7s`g8&U(`uA~<)gM4ae7c0dY1 zC8#F3Xzozz1{Gfv!6#pck_V(7H3!ov{MX!H7=f!LBJC@5+81E5QTrkFbn<|fXsz1_ z6gQ)s^-R2`5=kD2;wPeby6c-}964gh=aD^L#fDMWTwD#XFBE{1+@cHC=s??b3j*K( zg1Kjg>QE`UpKxu&_gIFlHrYcWZ1M%>_pgR-j;5>g7mWY|v|m7Ks7NS9Nr50yKyWA+ zWk?Q)5?Jq3BQS`rEMQ76Bm?SnuJCo59kr)WY9NO{WjLT2AnG8*{yoSlb+X)6M|!xV zrfO0zFy)Nl%!1{SEXYd&Oqx35(8+z^1rFVPXB;}Yubb-rkScq3Q{A8Lcle}dJR@O8 zsh{1$z$4<9K?q(bkzrmdj5&}@BpNJq!ZOu_*iBMH>VkgePLV;KGCK#gK`W) zbYap@7?m`Ck*X{t=xE`Q+)JEzYI3h8e#rsJok*0?EK|2bYO%XfN0DeZ;a$jQ zcc+lg?hetY{@8Is`oFVAi&P>!Fu4;4h2b!6l}yWm!=JfnC!T+HA>jzo-|>m1yn_@l;}vbdx8DV4gw% zPsRu+GI8UQfL~D_VeKiU4C263P$3GnESjO`7-w0Kh){b6fMd5)rzJ|5|9|}%es|iAxgxJng{J1GS`^rUV2;%1dsvK*}YWpyS zkFxx5aTy_>6|vUn)1<4$_hrpT4cafw2U1XR<)SRqSM@y_AB!g@J%c``cs$e!| zdJ=IKN=}g`RMAS-NTv!%+euDj?UHgalXx?FiUd3+1DnN5OsEA@w7~_EQ{q+0sgFw2 zs9}|y8muN~s>w6j^;P$}EsVu5p0(x5CDNQlkV%uJ zwVkaPw>=Bz)9Afm3&>zy(N|#06I3&IerV`BYv{9*#V^ih3nMGFP*`UYh}w6ap9h-z ztrVE^atIUVu#}sMt5mZEAgUP3kX=@q5}0|ClZmzOeA3@_)S3ygqWxslkg~+9&Hc23b3RFPn)vyEQLaNECF3CtnB^CjcV$Goii0!<;ME(KopIXCc z1UzW0kDXfwmMtZX`4Y_&GO1bZgyN<(8#6(|l?qCN!mJNQ(6I(cPF+Ys={BgN{dm-Fij@)u+)P@w;|=Cb zG+_spg$D~3*9CS?63{tm9evW4f0*jAagQX(lxa=`4AR6StHxyp`_w#%+3)!7v0ti4Cc9*+9l? zzwfAm=Aw|7T=vXTma$VKl`k4j?~lZGjzw|S=$ZOz%`>tgAYMFRiJ#I+WH5&~ggGph zg`+sck`a9_)l*mkBL>ViEN?4!gOqs~W~KH4(!Hn(_y#}VnsUW8TMhw6WQf4o8M3ar zhN3{;3pJL5ufXjqUBxsDrAjqZ5^MUQ18RX0wZeFnDW<3@S#rj-l*ae_c)~o^4c)jXZuA*F?iNCm7mT~drm;V4yVQpXWU!R0E%jcxpe|&9Q^{hrwL$70MiuHF ztu4?2QHHjUWjQ&d&O5r9g;XStC?~CTwfO1){)eummRw84iR$8Zpr*@uX1{1r~WR73B z@?PR7Wsm^|rfjt`3`}`}o%U90EH5ZIwS8md+}qPE%QV|&_G22dzXFIGA^DzMW}t^b z8*^d`je{boj*cn&{!*Fl@m7=z<+2zr4Klm4`NB&BE7*nh)gbpBu z#)>sGn!j0^PD)1>lUVr+4Nc)oirT0>@1kKeUt_45syH5DFJUlhV=dH2Bov~qwBG#y z0UGs$1=59Y$`!u}j@kL_cb-}89O4(Gdbx~~;<(w`fdkw;3u}H&dyuGI7DrbG4BIvh zyZ43FeGn2!*b#Cis8)A$qY1x}@5UJI{L(k*WJ91KbJE92#g!7sb)7?FOhddF4#K8f z5@7YOugWT!U|A^f(v}eTsTJH32|g^Dj%_Qk%+@6Av!ux`AI+n_0l1}V>uuwvOGDV% ziDa;tLdj5Vf5%_n#ma!TCSSL{W*=7r=IaW1$aJc*cwzC*Kh;#G1RvTJl;X>%jM;Gj ztiLVYTV@Fe_YoV4-wtdje%m-EgRT@c+{E%49T2>uPeXVWynwP$#K1wr?hh`hV4ls3 zNg#6^QzzMubksh<60J+Pj2PJ!7P_mA<}VoAke4he81Ae?#iL4n{z8`bP7Ipt0uoE6 zL&L18E;J{n=`+a>z##Vf1Aa!Q-v^md`&r{M?bDj|k{_hJ?gu3|!EL+gg9$pu2BmDX zMcWUoKr!|oWFqS)l8drEgY{MN9md$80s^lCFcL69%Q|_gIEH0}4&;r6*I@#{)M9 z7PTyexVDT~d0~Ns<&~_O&A<^7#DS$n@nDmqOjcue7NHn|FB zZW_WgIh&DP&=4|INarEEMXP2YtSMKf{1!tR?Daf{?dCC{$1JgYXl(xC2P98_5=}43)|U2lz{r4 z`bnFKXx@A34FG3_8RHB)2$qM9>*YBVAT#zX3m8IdU7h=wrn>;2CZJ`lVNNNSNxd;s z8Ra@ttX1cCp=D|Q*tNs8nwtT?z{+KQ*Ba^hC`azh!B}8U--U29Z1bN-8*kk0NLO;n zSwZ7$xviv?JjpB$X^aEIc@Z*F5Kjq2GA54ZA4KR7TfqaH*GoStpbMcg)#Dkl5)TEi zkzVSJ4U{PR0s254Ep{Ke%>ob%Ex_I;yoM0BHYMr&AmEPf4k9OVZ%{C1*van^%+{*SQM-95A+DLOoo~6QzDlhY{ z))eQ&vRZJc)fVQok%fIMNFG^6(uPLqr45i^6YDgi0mLS2TFMxsH+2VMrRcO?JJDgZ zXd~BX*ng3ONBht29dn}Zp6 zWRf^LE_h8+>grbj8?ZU|G5 z<-?yTR+_JiBqgMaN!hNi&1YlU1)p!GVPui?!%TxX!crQkxWa)Wh5%Y8Esr2f1!7Cn zpFm}F5^G4_WTppO$gsuVg1l;OM|n z&Yd(37PQSE2M_E4R&Fj1ORBJFHYQF=gJ%aSSiVY{RCb%yk#w1e+dqvOl*K{&Hj#EYp088LQ4S>GY!xLd=ckQRlNu z{2X1n=rMif#Opn*1u8x4C?wQ3loqiI;Y7~-DJ5nlN+JxPp-HGm%GgHL=vAx46LFk?EK`)>L*Hm!w;k(t~cHAEGzKf*?7fKljOU_qVx+3u3kuO-#r7^u@?6{kt3&Bc#HOsxTa zz=lxY8j4yY(fk{n7p!WOK3fp^vCJY(qk?q_dQebHBwDc65X!j$+iLWL4DOz6YDsII ziZtVU4C5^ty3qbqx5iP@wLhTgDG2J+`B&4_udX#FDYX;z!Dylu<*Xwb>L*ONZvP5g zQYH~JV2IOCY6k9D-EZycRqD1rxFIK&OvFRZ(lqcNs+b|81;&SIt~J#J3=+ZhP|CO( zhh^M%=mVB1?~4OtDlsMw+#1umm4CQk*x0{T%Ie{tTZov|T`(WLck%v+%>tRC18_38 zoj1vRoJ}MWvX(JH8Vb`>LHAOS9bWB*(+NGPDzcTy{HPx7AcYDu`_rskg}^h>xfz7> z=Xp!2vl^&r{w)Gb-`6b+1>($(TWoR*lCFUmAk7p!J(4g7Dk(D+G=eY7OMNyRYai7n zGKhDssb;5cY)-|U4a^XG3)^rZL~I(y>3a?m=FO+|()@)KQQeX_@Pe#p2mM5GECP{_ z;ey)q6(6$M;Oj%$w$h+SWQG;8Y_pwjbZzlrTTc6EJYkF2F;sDNjwZ5$%7nrT@+g<9 z?W=5n4M}k{Bzhs>9$VIzOJ(dAWrL&~+IN*3wXf_TOC%mB53fR_H4imO3B{}5UmPKl zPdYhXuIb1Z-8bZ~VP0^MXnNQbbMtu7LHeNx#tb`{^ZmK}$Ow;;Jyr?iO39UleJBgT z8`Grh9|6eVqV1RkF|gV5RHq0P?0xWCqZwr8xc!M-8JeAosIurRssB3{b$TU?S)FeQ zp`)-p=6Y=aYqNjm_|0PF2nXz?_nd>mX*zsPW;5|H*WnO*FRfz2uC^wst$V61+2X*g zZx=aym!{n=3)h*~P^ek~5Cl}!`XWE1(R_7g1XrQ!#I8nWKG6cI&yAGx06z^YeA?&d z{Sa1z;viNyvtu5Si|OhiL+w|UrrP?dq~!&6w+j^HfVZEf_d|h-ZQYI?Av30$7_bxa z&Af(Mm+CYRe?jO}S*vVXyFD$-txK2ZMNcRjWQ>hvgDlgRnRl^IXWxvs=s8(i;Sf{T z{0KI}96tuNicDV@pPG4B)wZSpOoC(qMcV*#4y1$fzo0$!9BtJN8JIT?u$;p1QVpM3 zXKgwtR3WOIu&uI#QAUnXT55KLz+sqA>Hrho-liTFMCwN_uUPMedVpfZ#q$-i~jJJ#K{s!<;| zPiVBnu^^356RI7&Y|Bp_KXZ%BvQ)M(Za1TH5L~bmzl3r!cZ-Xll}0*ts3t?3aPb3eb47I&k(HeEb|ulohChx z>B+UW+WM>BOg&M`pXRV}Pf9zCu{=j+yDf{0QmvGki*+y!65hJ+%v`Lq+qxM!2Mp3I zU0xw0tV=g&fOQ_W5Uun>99+6{YjA5b@ogOhV?8c8pCM=ya1<|w6l}(}#?w-FMe)7p z^Cg>hc2~xt&f{joFX=$iF_RAyjK38k`IwcaN&LzC_$SPdu7GlrcA>M+YcRv5!XPWlUl4zi=B z>5{eflIU8!y<@Dvn$WEKgV(}XU6IK0l~83!lv^7u+-VvUrZaFXjE;)vdZV-{{jgL* zAwhSM=Ib9slnNJI7@kb+#0@R{N0ikC9m1Z!6)dY~WSa_O1ID3QN zy+DSbK9;rYb!0IGxC!P0EGIydjBMR{Kr3vuC2F15w)qKxgBP^}n_!pl1XWW&6-Pv+ z!1yVoK{61fV{oRRj5@ESMa36=yIHcq#Z1Hy=jvdyMu15T7u8`DqdRosiv_!i!QE?m z!%2aJ5+k87-CyjccU4WuOpGnkD>rvn0wnFR0f8@ZvPkJ*(*m%_la*0&C_Jz&7HBRG zm847-0Rl0TbSf5QkV`)DSQxB3%>Xi5I6(4SR0Goql<97*i@K$xGL&s~S=sHV(}uz+ z)T(bQqv~wKqTShUM{R;FUJi?Iw}sPoTauUs7z`n=iE(K#%squNjZUGsEm*lAig(+& zqBO4OQ0KjY)K8jP2Dm{*TP0$?l<|;@Y{LkX@B&B5tZk7X5UH2cET0eH8SOU5T4cWt zo92=M_B4C|eSZX4xXW7K*A-ST?1tj7S}l*V@N4O=>B8I+Z$l{e1z zuaz-wd8}!Q#&VWg6X~peq}usmR87jB0ELw``=u#7T?V)rOdWv3`B&}-S6mcA(o+j)U3hd3f^ z#tfD;HwYb{-~g==xB&^Ou2&@KB>!0k<|=qPLOD!KlNoViI$kDIcjff4jXQj<)HoXBiCuk(FE-O6QY>xtnAn zM>CS~C=oMA>19;mp4wlsGU-MWrs!oB0og<*oqo}JKuXY<^`@SZEK&U8S|i0Ux?9^c zNh@TDQnIrQox1kuLUywTT#qf(fcC(;Wg!qegW|$3q)39{tJs6BUIG=A85~%%#xL`Z zI=&NPrx*dq48tJaN*D*7x=(vHBT9*XQSx$Nj)gFx5-Gu_#EKp5M0d?je>%Ej^w#d0 zKWCz5uK>v00?z?$i_5vXyuIntO_O+WeV9SAjKJla4Yq}sZe*oJrUQ#aePiqMCZiY? z%%3Z8qJZEGIIbBICEFItJjdJ^1{nwrPBh!EF*4f^f<$z){WMKHcecOadr`O?u*xc! zZsrj}VUeD_GpFOBhDH(?{mk|g7qIRQrYmxt7+zAl&SapLcaJfTOk*yU}9z_P{0tkicbHoEU@u`#PX0114o z03OVo3(u%&3!F8RIMsPDT6jikUx*n8XPhvQysF>AGf~1NA*>%zYmwqA4zoCuL9mr; zC%;*G*-RD31k#5E8AGGyaS>?wJcYQJ&R>Pz`3qa3bpFDU9`4(UnSRWoFOFt5%0R?O zfZ58&dnRFp4!5aiRu+Q=txhYN^~4t#_$rVgFW#44)WmXM8z6vhwto;Rx+(Yr2J;xx zv0_3AE<<`6$*7#&UCzO~=?pF=8!ED=iN#}BA(4>%eT*B&NLJ!+So#Mgz^hTvnn7p4 zVX;6>*z92|18m;K+R=buM#6iQ-WD?-LdxNdsi>tiQ$^$j>|F(&x)yCs7zEI>he&fR z$QwXVoxMwN%szRe@mOmQW0OsSX!ei*5$C*I0baGA)&PzgYngTfE=FgwZH%4Astcz$ zS<+?~YT;B#e_H9FDc}+~Q~(oe>u69v8a}Rfc zx&E6;K?inW0?kFv;*;(y=?s2t?;%o%_LX1Z+J98bSfGVC#hfEXg_6XLbQfMV)2uMR zlbT;(9p(_v@etU9J75ngG+H>L!dQ%RU~zVi03ekmGAv=Es7bxb#_AB4*dZ9{UMz^G zQRoiGGeD@}n7zBh@eG3Aj~KNv7ib=Z6E5E&?3g#7M}sz=K>mY)#8EpqVVBmhI& z7pfkK8WVNYht>G*YWx{`mmh?N+vM5!?(%q{pqtG`ZHb{|vzJ(FnB%f)e-@fJorYZD zOpc1vwuk9~&GCTf#Hf+m%4}!H?kW>?DoStD8EXwDhXQmD8cT@~Vi%%uJ=2QPi4A3k z;(tvpiM!8A@%n?6MJP7Rq0LKn8|AYc*)fKULcnDFWCH_Hasv9|70!%eD`I0q=3{P} zAeYoflH}x;VWUQ&+`)Lws*~w8W^u+U<{y+IdH%tQ{$PRamv!Z^PGBLTpxhUcngtmp z1^Y1+Dxwt`T}h0Q^6lqdsk}F6kFdv|0;D)Hg-b}xR!OiaI2bOuWt81xA!9*wV!&hO zBf2ofR%00IY5v5Ff%cqYW@I5_`cU6cXD)JUXpZp)6|y%tG#j=sf6C4K-1LflkY8C< zQ2PAy=DNu&v${M>^*ZcnS_#O3%_-uV4Ba9Zer;K$A`DLISy;*fyG8%=ToxFzBjeSW z27k#^sv%+f{OoqfP{+1>X%h0ft{;;!AobZ+a|*mic6~v{w|UcYb8x`V`&vn60qFa% zwkMrt)LG;bQkf`k{v9*Dnu_KxL*llseJYy2g4@Ph>-I1vWUPfuL>Bbs8aT5%qS;BQ z45bQo%>?%4EOQ@q9SFn9+TeUbijrjk&g(tW*FJ7|SU@U8K|_Qt2@q$KQk8p=(_k1- z*UcuTAn05O5Im`q5AJu6n#ju*UA1R7eyz2oa}gG!jyVu(+`+18 zVNN~v&-+U+{>eA~ruwt;r%V6+UqAe3>n7iwZ=TBCn#=V!bGc`7x!hoZ2mUXAo&W95(a&#q;a}hUzwYcm_J_AU^#A>Hoz`^3MvW#Gs!|J6VH%3Y8BFaPRq z|LwiMzWjgu>#;W%zWcRD?)e}8&tLt&Pu}~dGtWHmFE{=-f8BcYga7XDPT&4-{)byC z|ET@N|9tDm|L4!F`^^9S*uBk^|59>~@ z?;~;HP_A%Su5fFvlzzKmbma#V2KD9HCvv0yAr9{leUoIBzWVTK`%2hTxtqHleKzbV zBK!+IC4I9+eOvwtpK|ao6;0~%D}Q00O?*v4U!qXNCO$4Sjqeb2unE7a(zi9dclxV> zJkn#e9&7YitH+Ic+@#0NdaTpqBYJ#PkD4B1daT#uV|v`8#~D11|sF$z1{EoT>A+MHPQ)hA7A}BVxKY;As?k_`eaBq{%CH^AM-V} zKLJ5^<^B*F{v?!sNA6aA5bjTMAJ6@H?(0O{LZCidyCHWwUvc>)3I3R*(MGvD<*&ud)>WNTlNb`bR%O zjyLf14OZ{t?|%NC)Xk-HdYqJqVe1s*>YP`z1)|-u&eEp&ydIbOxV1%&m`B{N*&J4k z3Ri(`OR^-_GfK0_V@BT2Dju_M>2b5XS}JkBwlXto$n&(-#Zs?xK69Bk>|5p}wFzec z4GLFQlTqhJY6F8Gizf=?Z(cFcInT_oWcj7~KTJfti>Af*$@Q`xKjM)HhUWJLJEDXn zY57m{XfNHUz-uohrA*b&-Kc3j@d47u-_zrC7IsXP?NgXyXLs|MQCny3(4($&e$!#V zuquw9)1$4NbA`bHy`MI;vSLJDR>q4;ags;-?GzA2R1={!J`<2rlIIkUnN`Xk?!Z$` zOp!uz^6O!F)MRes%7A`R`Oc}{S8d9qUPQqOts|7iR}_jqug3+2sZ%@)eOgU+D&h^* zd`8t=QZI4JcMy?Yf&F@n@|fF~ReD))CHDv}uF=t>e~k)Wd8>{=V7L0LQWvmMZC3+j z9`tKpq~!K-OK7*+s4zpdpiJ&d;Z5!*U4llNdb#>VsqVvXXPb~ zdk>VukT2azBD^Q>64tuJqy4xZP0J<&s|&(5C*i$a*3Zh{el#t(l}la85+$|P=usm{ zBFN^?$-6<1T?)I*qjdrAjFQZ+Ntr@fzMJ)sjAeX+!<6enpIv*p)96kYwkrjiht44x zQ({gH@k!gS3f~4#0=RXINAge#CPx{)ueJF}pka%HvV+z6J9xAwmHM<*fWl0#;;N2XVyjQ`XEl zu9+PQzo@Xo)-E?3O!3sIE6s6Icj&(;`GUMJ8a~WU4sYvjg*~q@jfU3kByLS8;vq#C zQBBDu%1YK5dwmOM`yB=9(Gp0l!@_nG6G{f2R1$O|mCBO}eWY{8{9LhSh zbzUW?8{Ak!9xYld0S<<=wU6@&l-WL|Dm3y8^&Jo_!wzL)Wx|Je2FD6n(eYyDWOqjS zKn}WNvO8Q+yl8}<`fWg{a1`v|r?gt-I)QZePtq{jCmOSOwh+>$^N}47trTn&*c>X| zG`O}&huy6-TS>Jvi9y?pbEXMuX4_dwXDkN7t}eW-hj`5b6i{6d4_J6ZkJps%&VWKR zhbSpksOF-eI+Rz$f>xKA;2u37ylVVKtLIr}<VE95#2&2%s$ zW+-MVpQjeof&~qUxdS0u3tBBS#X%A<$$?-+9}m&lJ#oGMX>?~w{s52os*<0S_g1-V zitsOYC~Swqo)3HxNSSz4)7*E$p5cT&W zx1-x;C}_T4k5ZbS%TMGtK}A%-H5O?UH&~?3R==gHE9nLsq0gEiGe4Q8;8?dI0BL1* zj%3Lz#7JMBvU%Zc{+q^|mYoz;@RJry?Oh8{1-Gp?IdKJru-~G4gmJBPRfE&h{9I_P zOyE6M6Mi)RbQ+Ecx`%7#h~}RO0Hg7_YDw18VqV<=v@d-pJimVv2t|bQm{k2mo2c6WqFu$BasipHQkxdVHwIuX)V8p$9`h zTDXH;#!r=N;a)xN(_>$XtFEO{3LORp;tlFXQ*ifq5)%+C<{JASiF?FYZ47k(DX*)r zD67XKnG4GYL2}HxBV=S-hp>)GKQIjQc;CPi7Uq=RglU1mcDSq--PzN~<5o|)cTJZ0 zSFJaghNA^r6p;nxY7e|J8d>I5#k0qG#8;F{m|ZY9#Kk&uC};EKvYx}k?0e;h<&-55 z^mU&-@5dGqclCZ2{?+^RxZlE`l=DgH6IrDV;BL;j=cIW~4x;w0aoCXDtjRb9smpr# z_z4D-`tlQAf}w@r=(CFZQZJ^~z+snhD;YPMdwP`OgzIdFWjDwx<-bVsPax-b3|E!m?(v4^35b@pI$bGI%zBhhcL=#0pu80NdPzNG zohC#>0*-w8J_VHC_D&~(DBuR~fs6>UNKr)SyFf5YgpBaLl(hNW#vJN`25uNHSXZV* z5C~<-$fG*mH`vW3E66}F9=%?>am0Tg*r8hlhi7?JAi2yFXqa74w$to`A|vLov;^Ep zPTb)#ldv_pK6f)^Tqk&aZlpfI&0H)+ftT%t9K>D2;=rt4P#D%Q(GVP5Z-=HRZ+BB5 zNmgoQJEkKShcfAiSL_BFy=&~mTL9mW$pPalWdCsxWNSs@G$1IN?<3@Lc5akR+H`Ne zBA-kh`ZT07E>9Zq<%567W8 zs)P@7Lz(>2&NP1!aqPRdd}3)L5oLWi5S7M`0ohmVU=Ng!`JvN-4DFnm+!dJ@c_7?m zNw@%%=OIVz6Xc>rkRy1OJH~oIWJIXZU{0hX52-|Uo{U>yEGr>daz%5T&%;%^v7_gm z35^;Pa?kn#m;HOGqI9b=03r{kTe)Jz)EP2px|Gt_^FCtKHXCox+tY>@?W3A18~4qN z;HisJ3!x4>eRmPP6V$B4!>~usv_3xqM@-%8;cr4AO&P8`+SDw#q5_#oQvN7j1xa19 z-_ocv9_<%Nwn|Q|=?0{f#x8f@sE*0ex{W*06Ey&%1{x4rs{#|ThPI!vA=rLKF)?!+ z&mrbdj$x2PGlEDfw(x%Q#Qj5c4H12(majXZz;yFE08^^uIZ;dV65Edsex<^dtHJ5u zjG(ku zvp$Xc(YYGGYjEsf-ei!^&PfwTof_h^b2>52mLRsG=~*`hxGsF? zyg>qkxA}^d(>d?2cgkEUhpt2>+a+-gdC~$2GAcm5L8EP0uxqL2o65t$y`sY+OkJ3{ zfnCt0@eMILf>A#QI0O%URI>IE*xI$*G8su-IV#&R)eMG zL0D9In2mShpcs;9gfSHJ)-)hB#1T4kT%k6>;-(KUKSYI27Jc6@jGq$~F`9-2QP36h zHm_JN7I3g3Z7ZYlQ9afHxNQuxW+e=txUldgu9IWbEDeEYUaBLf(2~EngiI%aJ<*je ztwO_KmLj0r&O65AMSMdFbTXt=&R-b%`R=6AnhMTn&C0)``6vV8Lp(sP`?(lvhl@%t z3bZ%#V<0_EX#!8HNWj($LNXQ(30iYRPmJ+P91YcV?x2Ai-7O3|885bTio7bnbE=|i z0y?Mog@JH(Wx(?*172JiaBgM54`sPyg@On1By(4oB!biM&#{Iy8Miox7}`#2H6Zy} z{PR)g`GN(>WhKi&!YsO?Gv^BHJkQZyN-`HTk-2Fc3oC4-*7gQvI^MM~N6(ZcM3H@S zZ)ld52!qz^h!?F<=Al(6i}cx>003Wroj*66!G^IzT06$HJuUgJxnGPrFG6nCD!G}F zX_Q>L!OmS+3mUQ&>J&J8#&DwmOZCI3^Fub14C`{EJXEF6nbS%RvIRGGaj7&qHoEP}0ztax;2-MY9( z+Uhz(!gV>U`9l)V#}*Zz^C)r8O#sweYc*^BwAAd`luEZUe>xmOLNNbI4_Z57k~?nd z0oJH57^8F>u`F{JWK10CG&{9}&H@7S$=*?5U#;PiVZnG-zj&8XfZW#Aa=@z7cyGO@ z9O>q2E_L0UNmc4|`f>et*L_y^l6ZunVtuYwRiiAWl*fEyTudDyM{*9VF5cxFY!`DZ zn1b&hJk@RX{jtecr|C3wqoZ|tPjX%`(vFJAWsl>5oXHGq-nR z_e+32QPZFCm4_9=I zB1;)A(OF8g9QFHNPTR+NG+(HL8WHx%^_}QZ)-04Iy^xv?VFPnau{X7UF7= z^~(pn1z?4$8!<{A^-^!t+WKIjHmaMYtm;s{sSNxZfeJ2|${_d=@nD=>a;+I((;KDb-U3i@2Z#d@>IXq==?i_x zVHZUMT!Bqk`)wT7%TFr~TL5{IRpv?1yn)>_mMcDE$y^;6&za{w&vT!3!YL=9QyLf| zO68s5XnbF$*p@bWL^MH1`u%4`-NS&_6-3S|JsoZ=pKo71aw@6VGaun!%R2E71n{nU^v?{=N-1MaiZaY#?8X}rf{#9UB z?-C_z+(t8Rv6K>h;0WQQv9y*31u07{mI&mRX3k=i8LpPXDnjl88_x}k{2f26iqr@d z-A%z_*`&Y zQ&1MB?j#I4pPlQr_-$3((jZ~IW3bHLDk|ZFOXSsw5YS-gg}PB0E?2w&o~Bue$y&RE zEtc=dTHL~uQ}1wqgw>H|Wj@s|wAm2$)Piw1qj2AuGuVb4kB@&{2@~0ZYzzJ~=P*0LcCXaN$O3NFD$gi2mt! zwz|IQD1OS=jiuV4mi*52Frze!K8H*Pe1TS>W22*~Z(7$mi&4i{DclA*-3w0tgs2H3$XV;^J_FMYdyY`2#U%MGl~>b!`0jMmNQl z;G6tFPBiz15DssjdqdJO;mH_oik3&m5p&ENiq>b7BpCI>uI^(Z=T1BrHQ&Q1X(m?+ zbOZY4kB08aRjf~#wLPg;1@TF9>zhS<>i}xy^1S3Ym-35>4Bc3WVIOAwhSJ4#Yu-jv z-5ZwJBt+v#9Xv}F5aDE#oI>AO#SAv+O7V>r_*{Dq)3d=6Mg(-{yOT~5$0f3i zmip>gctU++eQZjg>(UGCa@YpEHP3`EdNkQI7?$7#JHeTXK<<-_1G^v`(Mnex_!i@I zba*xL6!&|2vLMZP*ayqPB!7mYGog-A7=pUg5he-ItV=%0Yu=dGx@pe#P|#Ux@HtO& z&bNNV{ji-w0t5j_Wa4J-S28WWGA2nH;erfI|IRs^XV^UfGjktWYCbz8G@bRVXS+}Y zC96StUU$@(=ywBOhUJqf;7U6&(@21fjOmil2`4%));ukxAvK!nL3es|9)`LUP^jA5 z2%MBPv>;NYw9XUKs~Tahpj0c0VNGQeie}J0J?Yy`j1X6*YBCtD!SKYzRh4tR(aPE! zhjFo|;s&CbrU$YH7|BW2W#)KKwuBHnb^|%^Gt<-pnU^AM_zjB4jUG7K%7?uK=d#i` zE?Vm?9V9QJNJJnbp;tJ@a^IoSWF@mFymDIY()lcdS(ypR8evyuTAlV`A7b_l3*JfU6PDy303)YL5EA$;; z`NpN?rD#p9r~|`(6p%1ma>Ee1876acbJ9pt6XF?5dr1p)VMbdm9oR|X=L4}pSV)$- z!HMm0U__i!LTR+l`BvsP^d$PGSP8iqQeJ_QfLqaZo+%(ZAZOc z;CM-cNeawMHiz)JE71f)`|Bn*aF8@;AgG43r8LSSExlnp)SUsm9{k(M#j8x6 z0retM_ZDvPo3whq;6R*TH5Iu^V!&sG9RQ>dz>5{aLNuy``cxHtz`<BLgL6Gr^4f^IQQ6gp{DWriUhV@>!vYg!yJ~&sziUoQ9Dv32-*{X*xQK*UB^L*f! z>u<)nsavzldyHN->(`9t2Qt4M-{*S$n@01%!i`F4LM;mkzfp;!xx_gF3 z(o^aE_ndk4G2DAb0cMM&E-`6XE(vnD!4>z|;~4^JH8H0}a0K>}#gQh+?e5(y~Wc>7b}3JK09*39f0R7(mwzIb2k)C?jgFI>&hf$cY** zMXFLdRxfK|11>HsaxDvLE;(L}lB?1qn|h6#*0~V7H4rXdr_;OFyMq{A1E0Llee4)K z(W`*rZwhxud^mKvm;sa{9Ow#mqf(*7n&E=Zn7V3a2VI5EX~#|Ci(Ts{-QH&wS@awd z%qZjxh4-dFiNVzn%9JUacELkG1s633 zxuaB|yBR$;ptZbG>S)ItYEE75vcme zr8f~8FnxTAL!?2xyvTnp!MO@Qtzh13U&V|2Q~QE!!6l3sX@Mv#LAaW@&s1SE$I-9} zamHs*hsf4J=!EOwv;IBq{mb$@N9;&WcMqGb36j$~$Xc_?d!)XIUs3i~SVIh960*91 z0H8p^N~1^;+_`*QUi33&u!2V9R%9y;bzY-LFIvq=#ic>di=T$9@F8WWBP}3>I0f)R zN&$Odr=&NkaI+u8AdsFz2GVW^dm1!5`MP$x#inqWouE0vo5Xf&{EOardvSMmwT>?}4-5C52My_+ z2W=+jQbdjEM&`kcikY5d$Fd+)7~S}=uS01kvjp)jzVaegWTmm=&K>KNaM@bN(nb{` z$*}ffW?`BO@HDTC>VqPPAew}Mbxg((f)lrgFSodrZ3JwxA5%)v7Ad*F@v_y$qC7vw zmkLCB7OFKDvl%_4ZZx~dB@rfYNWNq2a#G03c$l^dQr){Oe#W$piUp9P&i7IRr;D*S z(A4WgW!s2hM)oB`7(N?%*h21@5313q_So8st=G z>2|ZOI|WCNKE1xD($?u!0ax2DmDJ@1m z+hY$gX&wdJn3jVosTgI3_`OX=b}yI1YR(c9K*V*1zSm@cwuMK7x!tA&kim>$$bW;0 zA2fi6xe6I6dyY%}#QX`6!(x~mKn@`c0Xp*vjpe>ujrBLgMF@exN`$~=3Qs_bagQQE zNT8=xE^{$;P=s}(O(O=woOfGi4pT{@UJA=tRS1hTl<}b9g2fQJ5VCMD3+P}-ED)~G zQ%kF$FIMwUMe8zEo1WEED#&=tMZ%@&7anb`0j*j`QKQR4T=_zriAE4JwMiZW+g6|? zH5>%N>JRk>p~@j>yf?_0ag7iLjEm9>Y7~==>X6ffM0^mDgj_{yy`*@0kS5p7iI$hW zMssFYsosF*7iDkeH>pfAg6318HGtur>H(o$(}&!K${3-?NJto^Qx`>+l0o!yxzKzf zWp)D7?IlJAMsz~1rKBi2;IaiI`YftVjnDw(aLJPtK5D&u+4--`ni!IhEBGyWY?ep2QC2lW)pjVvg zW%I}YgAeJ2SdONIg^ZO4>)GYGtMas?$cA>YEpSa#}Oce*->t_wRK7SU9*8C za+Y+%@HBHGTKBlmblshkU3c>xlvJMHse=j49R!9dXGcLvnB``rX@N{ZA-sm3VvIeb z`&l6Zt}Kw*Opc|cg!oHw<>XYrZs~ONqw8kn{)NaPOlN(fI z*&}Uqs{fc{*ri06M;(y7Z3gVoinHdU(}!Da<8dzbhp7naT5 zrFOHNt?@3fDZ{#(Lx{Zf$E3y zz-+>Z)2K#>Yg)~1c{tzAiv-aBFDB(;6Wz#?UjYps@XGKV4g^(8Gtp@rka4H+#m*(a|v>3~~-RmOvRfOn8!lE%;f&sW_!${q8Wx zgVQ(^PAY+_mk3b=p*n2@pRaHRfCU-Mnw>dUa>18jYOn=5gS|Oc?`(>THS=QeJY*}4 zS@B1x;~dwc$uYAdnz<95KLF~S7k=dgcjpzYGyKgDH79bR=j{1RuxWm1nHjO5TH_tL zScfBQ5cBy7Krj{{^HlUtR;3IrR5VkUBxw7*7H;*|!aMeS*9*PkDQqo_$fZm$4_iVe z0uCXpRIWo5S1}6-hjo$%td97qEf=(?)v`e;g+aY7KKZ(q7G#}vixP7`Wp4IcFbCiR z1{z(W9p=^4Wu_0PIb<~;NaM#H6H=2r&d{l_iLOdqC{12<-&t`NwxF74+<(4E4UMS% zWViVpPioRE(rwNYF4?Qq&r7=iCW)}dVFj)(VI?Qyx~Ro2wh_-F=}LUJoEPeU&i`nQ zrYr6M6}|dUSoQ@2SWYetQjGS&jCZ}SuSlT|8;roIA=y#n<3P|67Bn&U8%c9$1py*W>4TQTuCuY zfKBQs7~r>{OzhP1QnGZF>@Warx}{MIw6zG1Ol8PY5RkEaPz$^@?oOL6d4O_6boxFS zKh?(o1H-UvXn?nXMt@;5o(~MJFj2*sfPiG7b&BI$Ql%z@6e_P{VTbp;W6-7xMvg5G zB%z04lN^!*d67%|t!ZH)qj`~EGCnGD=)La|>oW01^iAnyjwG?Z4|yb#p;R+biitC9 zh9F@xSD18}&a0g{-^kWX#wQev9cV=q5g{}o%dn*o3c>?rBZ(lNXf({f%4n48ln#2o zTMH$obsOR8LTe`qpQCk6rwCf=T6=T3LD)4)(PtEFgaK43Vc_iBkgM=l11Sjfv@}Uaaf+@dB`EgkwK!XuR>k2sC4LD}0Ef_O!@?a*eB=1{zTW+|n!k^X? zQ(?uP0dZvuowMhCmim+$qIxRb@?W(0SM7P;o?hBpa$}>ZlC8xvXS$i*CRj$3M9$vY z4ZdvUC-*R!mfV<7&|S0yZbfK?3agk5dSV&3$$Lk)n2Q9!uG4JD3Rzror{cJ$T3L># z{Zbm-U?x-+dQvGcc1ls|*hyaN2As8Y=adecAEiFqjXdv8Hvv%@8blb#Y{+5eLfX#B zENv^7IWf{8ZbsdS`GY-c_S|64T|6nolCwasb`Dhxylgk$QVFZv6 zfY{bAO{K#t!xj=YV67}zcXFzK0~bG-%*(}I}H5phK5Qswq#Yp3IS5P4*@Vb)3O~`Eghi*buiWFiMw^T z!qEitZ2rPx-?i{5b6@iIAnBWTNl)}_WJke<8_k;P$uw)JN1C-P#&l|FjC5*Qj49L7 z7`Q*mG!=ST2q<_vyE-VP6G5PZGN-tz!E?ep1V6pw?RK4#l4)e4X)vd)r@i;nWpQ^j z@@);8#X7R2dRD9>t)4}vAzPvlpp}Q7#s`p=$sM0i!r60rB8ll~*hJ*Qjh&?WX21qr z{F}7njQ2r5YK1yd`^sq?%W*;OlZnche{~StFgxIZ>+1;(4;(%6?Z@(@D_FV#rDLB#p7@*jT>Kw@>AoZ1+Vs^& z4j$Xxc$ZvU$^Bqz@A&pD zlXSt(Jz#zR_8nU{@87;}=jLs~*7mJi_U_%hb9-a^zRit&`y1nXrs%kRd-w0$zkOo+ z=E;ezTgO5A_B|6jCnk1o-Lrk$w(Wc9_idAO(T>LEiOmyRc8u@eH?eQ$zR7J<`!-WB zkBO~-F}`!lPO!YUF|~jD>GzL=oV1Uqp@vjyZU-d zgKRqheEaz1*1dbT=W?IV=hkid(mlJsa%}36eN#vG-SKCQqmMBHKJ!l}Hf?2WRMvd% z=+xoHw~rkC%UuT_d-TxM6JNqxRhD|1r%uwLe6C+(B9~j0&lSJiIMkSWtdYxoE}y&m zvqv6%;^@I|9XM9su=n;lV_q=gyd;g-b_gH;n{lKwfk3RP4PkriSqlfD}>IT!d4<0*EKYDQQ z0i~%QJu-bv>1bR1@YEwy-)bCgJaVkQck0opJqHgRJa(}0*ru`-``GlOj~+RC?6LZ> zqf`5cIP%EUp|qMi>W>{eI=%PU^wGw?G|Y-TcA!z;d*tw*gO5xpNBzkD`ko`l4s0ry zzv9J_J_YfyPnXLZ9mcJed0XoJ?2)65`otae%@({R4er72mQPyL=1t?DOk=ZNsc+e| z73@uJ+CkKVQ-`OH9(<&J_apm`9yz$L{>l2mfAW?3hGo5VJL$f7v|~kAA6f zOj*ly{@Ej!yCI(|Z{0MpX?)WJOfZ+*lFw~2|0lOLwrwBZv2SwU<{dj4;|#8S`}S|y zJh5ZT4!9cJVEgz4Y+}!jTy8X<8@8VLr<49l>WtPJc#|Ni&C_f3N?^gttuUG*3zVO#NzLi|B+vFb4C ztg?MxK99Z;;n<9ZK6GW?b31a0q*og(3a)3C2T=&tD-E>R?N4Bqu;*&FYN&And4VQj~1&QxW2Y)ljqnb(^x)W#XCWnex zJTqACQf}9v+n&t!dreut;O#8bw-)og@Y4FdTw&0~(hIJ8yqpwEyP&R^XP(ZvInU5= z-~{59(p3+RlC0w^>){$SJG8zc>5d#c|AHY<1=Bkn+E@`2&@^T;8WVecC2MhntCT}G z+PG41eY0vo&Ux?yeRoG9Q}o>KT(+;Ww5kwU=g=iKk%-ir;6UeU7gj;>Ui@z@6;W6N zhaSKBLpSJ9VN&8-ur>Bl@YCSxlu;a2?MBqb7m#X7GxR=(-fNSd-uO(3uPTzi+@TFN z2a&;R^}OvCkt(RxI`oc;s6-E{AlU5CriuuZ=3CrU(|zm+*Hy%3>C|8qu96PjVB=9^ z#3tg^n?l_VC61bgC6g*$Il-Y>>o=^s@-leCUxoMgCD=x_C4^dw6VFBwT|;?yx~G^^ z+rdO$?F-=Q=iGd6wwOt|ezpMj9!l?FKhUf;1}=={j&#an)4DN{ zVYiDdu8%Em!sia~-kohcj0^AA#oU+j5V5PSLuWBZ^~}GQTeP};07S9_Yf?AfxMC&3 z5$8H2EXNx(<_G(3$#g7`zJ@I^OS2Cgi&Lw^nB z{di-skZs8(QaYlB;j2Y>!&~U~Lg~6Z406u$1x)J=I}4uAk)eF;!o|>qL;(?%0>T9d znIH^;Se@)wC3=%6z(46K!t84e#O|9XMk#|42{k&jS_Z5gYivKW7@1EY2a8r;oAxp( ztmqxsXnTb`YsOLx`PB}!ZOI}=<3qb-l1bpi?oS(r&dVY20q(InZC2a`4jQ zG_+=4Wm+rhFOU#l#GqqEuve>a7FWh2+SBCF8r#^$@F;Uy1xMUTYf@c1Dt_X)+Pz$w zJ!P*9wrY!2e9*OlQ2tT(UR4!`qxq!HlSOUtrC}9vj(UOrL3nNO1&zKTMU<>goS&nLzh>jG#GNo0&0Re zEvPvi%7dj2e5X5fitNNz`Nd4ey<`o-_eI2TS2(2Nyy3u#K-&8e^v6(RDEaM*Virrl zG8sZ5-p_2+q1lv+&1@3uSHWcmB?%7lZV`&6ouSZoV@If2n{uowcoRD=ifS_Jis=j% zoq9J!Z}dxmA{=A|Qnp!6*c?F^e8B^R=$2p^aWeE2a{PF@x25|TX{>b#wO#eL_f z>>rId2ON)v_^Tp!3Ge;Us7o;IXsEY1beR|hEqy- z7)_qT7c3{b7H5_=GM<@e8^Ngn6PS^La=q7`C}s*xm?!BJCc0|Njan0hUgcZD{cm$< z^E5Fx_V>513SC_OE zeK^UuHDE4{tdK+hhQ)3Z7{!+L65lHpatWMm1oxvlvfDlXlCFm3-7C8<>|VMwwGuZ~ z62eQ(Cguf9;lFP|I?W+wlbJeR?+&~aSC4MyYVIFyah2g2O`dkS3I1P)MI3T@Hw+Ni zNERA>#NTAWs67wPVs9c-I1k4uFeZFJFSJ?U@^ZFF=Isu3B0r;K2qIiL=R0(+%)UTK z`Fgha9u9Uo2IVjXn-+MU$`CaslN=Tih^VwC{n8E3lDU>0L zG+9@~>cu;y@=aW<85_|9+}zp@TUG35Dkn7Oo3efV*`l9vm<;5Gah(ju$pX7>uso4J zb!c7-FQyeyKnG84&E^YLC;`#QZLn}z-nLd`7d8v~sfx6in>MeI8?4v@eV*6Gy>H9n z;!{~Ve}ci14OZD&9&mQ+jLs@qDzmIqzbU`NWKRXP%kx>kF_%jWnnG3vE;M;4!x`$G zZSW>cWeEsu%wl^74P&nd3b*3&Yx*+cpc=S0K#AJZeK4q|gxw9ava^UpK%|&vVv*)2 z^gYBnC_aZn34cqSX7nT#=ZJ&z4lxZ|!t>2!u_cKVaI}=@O%A<*BYe2CGm9umh7*Q?m zcrPwWs(M~R5T)J@C1Vt-4bx0@)$z_lnf@*W?ow&3vRL@wNfso}E&0G8sMPZ%sDzd1 zmkcW=Uh485Z%Gh#)4FPI1+c z1J7r%1tJP>fG4ct!Fq4!a&*IX9L9#k#6%_b_u) z=rbD&7DHZz6|uMLlhC5+6XORyLOykj<$gu_fD<7{K;}<9RGDwe_mwZLeye3RIpO z;Aql}y|PwWA17LRa)=>h$@R0J$HZF`DfViJcojeft`xh7Y+4!H#`I1v)uK0#yrpi; zU=Pe=xz*Qw6zk8Za_YQHSz4W`^VMiV*lanqq1fULum`2JPHsgj1x)t$mJ8&*7BxIr~DCD0ZQ zdP7s$9}o5vd_Iqh+t%@B7*bZ7Pb2pbn74?CE~lD+VG_GTCveP;8Dw!^&D z5}&+{mzF%j>mKe%>CIJ@?eI2-JO)ei9s5F-??~Xrc0W8-oPMajWxSq5a!}o9(9RdW zc*6qJcZhP>ez0d-g%t1H<+v)Dfiq`%9=VuNDJmr4sa6~Y>*=g+%N0_Hi!swMp*_B0 z7Ng92Ftv-S!q6&*&Wr51G;mvXU=zMK0i?a$t+ryuJE_+c)FF04wA!KCa-dgdbE!D& z$ssIuV$iLtaaulwj@Wz3DfK7kP+zm!Qp-IN=%fze*6aNnsOp>g^|%g^&Ft{FeFEM{ zZ2`OGY)UbSG(cn#fbyb&B$0d%w<6^eh;Z`|7cRaf}f>?2G4^y+B%oJ1V zM65Nqf>TAuxcg<0Y+z4j%1GE4l|iy4m8?RYug=(jfM|wq*KWMID&Wf9mG&LpiXFJLRy!iZ#v}+k zJ0lMw#1!5XsYe6=!K`ARKRYQ8`T9>e6gBXH5J_0*(3uegY(9c@^Z0}bT@sz+(CLwu z>?Nqs_Z)m{jU7CqS_Bm0jml!nJLJD&QzuR?;^}fDDOc6j@onu_Ow(vYBsf`>bR%wP z+4ERMr1Sw=qa1=%QBa9VuZHKi-OH^x!F5-gc#7MN{UUF0E?K~mUjQ5H;jm%{@`yMr zaF?t(Vf7LX$8L>(@u%m1?2ZQ>dFdCY-C6v|V;?_lTwKXwLin`Zs4*9XKO@-{Wul-E&|5;lp1){HqDFN-QWB8?~BaCiBH`8V{$gP@|T1;cHOaJE_J+VE>}rH93S7u#|=aL-iNyTtU7KW z(SCl>sjYo|`%h0l;j%{__(IbiUwmTbzs}wH5aU>KvkE?I` zdz<(Qrn>RapX#FaO^wS|UO*aE`*9i-v-@IA`nUi6fz5aS)rO{(&x0kCX061#YjV-& zudQ}OH{#oV>ob|n91-h7{2}Lg^(o%!bDB68Nai=tQd&mKX$7sM3+O_+h%TlCby1R1 zGsN`4n3e|Y3!F8%|g znQ~@Pi-XjYLG7z}^4K24GfEtP5(x#@pqzE4AJ3V1-hpQgo_~WU9#-Pk5(Bi#_*IpQ z;zepy`KDQs!l3=Wd1cCR#PaXc zag5&7|6g=g-}7|NwrA=5-Z4562#~(;@Whev@xv1@P87C`kN^2)6B7+5k3Bhm2A(I4 zev@WQ9Ko|wo^$_&*3LM5q+#wioPF|Kd%QenQwGlo{GFT8?=u{oIi{X>jXjNg`-S7< z&#s(!cw%CFd}887W*muzxKCyJW%^g~37CCQg3fhw=^!hGPAoSUziaVp~Pd|G0xAd9s{)%q>{4Z(n{-06bu7kAkL%*c<+n=G;?|*@o-1-va_7t6x{RN#3 zxt+W18Iha86FeX0?wIu7TCU?rQZ_UX4@j8PVZ6RLZ{n+W+#%WL@3`Ym&UX@x9~ygV z>>2#U1f4%LhSU(v{~IWpdanMk&L08%*#6N+T{}NI`fX%s*5McDasB?$QOq6ufA+|a zOa6QKqp^1WTX0d(e%#crCFedX|Ib73m8_4q><{_NG@14_8|G3k8+Dyn@7LmY2){<} z*IM-`mIP2bc=)&U$iKft4}JF#ePYicdhh)QsPo>#wB(jU)beNlK^Ncjoap;mndfQ2 z_5<|x^nZ%ZFHHT&pqb=3^MgkY9~qw*Fa7wKK;0lxFZ=OPG&s(#VFkDItwbTX%#LV_ zXK7~8JgA1sn8E`gdaF8Y@H3jHn@aU4r$?ED!C>mS8na0yZlS@X{@|6IUNF_8qfbbI zk2X^OtjOWMupZq)s*l${^2j42BO{}u-<9f;damR&`i=7Ss&-^#FDwYB82)=r{Z~|V zSpP#Q2-Wje`uVg#N)IS=h|F?qvT@~wFxqb!)QQ9qz!zdpA{3s*c$BZ|N1_$a-dh3Wu*Wc-!huHyQ=0w3sy=oedkmMzjA#b2ym#(cI^ z8~BKR3(m_Yub;7JH?WT={_FJo(DRGoAzQB2_)F`zkL=+osOyb=QS$@fHC%~Qss1df zHTA*#e^yw>$Gwx+&(hT+Z~>4?;8*KEc zA^0{{ef$;ZiB^7+{eyDppv+g1)lq*KyuVQxE`3ow=RK{SbM~nx`$e3NJzwW?*r)l^ z&pA)4{5(CbZ#Cm>p5NaJzq3{~;!l1Z;upvAJFR-I;skg)^wO{C@%=B*?r$BWk9_eN zD&D)F5_dgGO}9Ts&9{xwyzI+#s{ay+-?`25JCi?9NdB*Xp4xjPK4q)r52oCp*QZr$ zT(Lsk<`yDYNd>!Ztp1`E#B0<_>e@vc*O_-~tPJdM)f)r?I&cgB!5%4PX@3a8*YiyyNoc~hzy>2!7hdRR+ zrSL(lKsPF-KQ<}+P>5XKrV5Wx0SjPnWblEZ1pZJN`T$mGMkRR!^1Roa=A)(?v8-}ohc8WfENj(MCixiZSIFvEF}cSTNU^S`Fq?5sAOXB5TDKe zU)bay1!>Wl*;AA<+B{Z_M^6nzDLZ(Mg79mBH#@yhhe!YlAy zAK~`#R0@wnpdbl-4Zf>Hcez;&7Q-n05_swRu3aAwu#yw%Q52rV7l$|G?+)Q-N8xz@ zP>KEnet#TZliwA>&?+~;Rl^R+WblT(3T+FVvu7IchP< z92jShwKHsdlY+N(ckn3SZQX@Hqy3)(eK+Lj;-i4Kbr;~%rf&)4^rL{c?e4Xc!k5lJ zmcOmL3?AdZs{UHKdnSWVM}LPSb{D!kefTeig9qK6F8qVG-G%NVVg6butIXfwnC?y& z{y|H3X9@XxCZ`{>zqZeCaanlS+`#_G1hmxc$>C3jU7evOBbM|?|0iF6EM#*G`AOj; z>*te}rKDzoXOF_B5A}(dsIOmzK^`7h2t z&JV?xW_TeV;a`cry#F)9VqbJufe(K!#2WK|cmPBGXISi?A5b42{(2N1?t`HZc*}pB z5whv;8A$#en7uGJWk`F zZCd=F9)Xt#+_d1g?+pWRItVx&_?bd+?<1r5XVP@w>kN?foDTd4EI9Kz4ft6G#(q9E zb^W=-hBNO|hj$Jc80$GUIsEN%7fF3wgZ)4}!CwhmTvIatb%BI3u$o{)8A*?F8IoyM z5uTS4Nf8!Ip*C9q7D$xi7m;Mz20R$rD&!Dp3;2^G1)K>H#NOi6$NBuD^!%j~f)em? zK7TQ$+-4(2S7l4V$NBuH-1$>53Kk+8zj^2LC+p&zDdwjI$**OIqmei|Z?VCwcMC&# z=<#uJbY@sE@z;u!rJ+86+!BYHYJM$uA9oR^+CJ9KoPW}3M`ATo%D(Ihb^dr`uQ^7a z^7A*=`EP*d|KZD&1!fxVvxPJVw-4;(OdPSZxSsI)X#Q4xzr~bZ`l5ML&$q_&Pe<$L z9m_`qa!ei(anLb&9FvDFfn)k$O9S5C)5r3*1YUJ{#MiHQKED3N*T?w!8DC%d%Q0cX z`uhsgrk!)~?M6HCw_N7WSGNxNn{)UYwySddeXtp{cCE_sw`6A0(2&m6!W9RaPXOQi zIe5`&{+tzfyNcTBMtp9dHoP^{R@#DmGd?%sozvHA4x{V*eZE=r-C6vG52Q=wQ{e{r zNLr7a1FQ+k0Z*DT_%>%V`S?a>R@$8-9Ce^Jfzmwc6I4LEEOIJ+p{9Q}<7h{D4mCdY zl)=;@Z5r@BPxZ3`-yLlLg5H^*aU6V0G)sN>@c>-_6jxh!#hA_5xG3#LZ5N*0lDRwqV`Ouu@W-W?$G2^{Z5^OPIj%&` zP`;p~mdB6zb@44>?#VK%_41O|tSJf?YaRD-DJU(cMHbXDlr*3u&c{ZPCTq%o(A*A~ z$`}c51cYjWk#itZ^Pbw?nEf-V6BY$4IZDCHNVTpL$>|inbMig(ca8I@UFYQ+k+3 ziJ24ibTx2xp=~2D^`qPaRzvj!&{03(8`1f&1!kTxW}gND$MW%H8XMf4c^935w#FK) zM~gf-VJY^5PB`}sOgQfpCvo|y@m(o&E}#=F+*bj24%kDSE72>~h6Z`Az*w@CAZXO_ zfMd&45EwO!!X6l2>M^nz{BZgVzJHGYZ3FFl(9?`as2~02p7h9AP?<8;g(NM643~j+ z1ID^e-j<108#*pVoHc11u=9LX+7};RU(en;NX~8@j + + + NLog + + + +

+ 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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. + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Pushes new state on the logical context scope stack together with provided properties + + Value to added to the scope stack + Properties being added to the scope dictionary + A disposable object that pops the nested scope state on dispose (including properties). + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Special bookmark that can restore original parent, after scopes has been collapsed + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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). + + + + + Process exit event. + + + + + 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. + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as IDictionary-interface + + Message-template-parameters + + + + Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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. + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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. + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state for ScopeContext Mapped Context (MDLC) + + + + + Immutable state for ScopeContext Nested State (NDLC) + + + + + Immutable state for ScopeContext Single Property (MDLC) + + + + + Immutable state for ScopeContext Multiple Properties (MDLC) + + + + + Immutable state for ScopeContext handling legacy MDLC + NDLC operations + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + 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. + + + + + 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) + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + The directory where NLog.dll is located. + + + + + 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. + + + + + + + + + + + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message. + List of event-properties + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + Fluent interface parameter. + Override the default Layout for output + Override the default Encoding for output (Ex. UTF8) + Write to stderr instead of standard output (stdout) + Skip overhead from writing to console, when not available (Ex. running as Windows Service) + Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) + + + + Write to + + + Override the default Layout for output + Force use independent of + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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 + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : AsyncTaskTarget + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private async Task SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + 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 + + + + + + + + Override this to provide async task for writing a single logevent. + + 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 provide async task for writing a 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 + + + + Block for override. Instead override + + + + + Block for override. Instead override + + + + + + + + Write to queue without locking + + + + + + Block for override. Instead override + + + + + LogEvent is written to target, but target failed to successfully initialize + + Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 send the log messages to the standard error instead of the standard output. + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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 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 activate internal buffering to allow batch writing, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + + + + + + + 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. + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Writes log messages to in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + Force 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + 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 + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + diff --git a/packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll b/packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..8c62fc2271d8a9cd23e0899f1ce30c662087a072 GIT binary patch literal 836096 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

w+b3%3`Hdet8mJkZRxA@Ov6fnfjh9h@ixH)B zis5;kuub`uD?8>tBh!Q!noT&e)aRCZwt{s0baIIlAB|I1b#|**_(Lzzcnd*oMQd8# z_~kFXC6brE#AEE-(QIwdey41{?3S|OZ@^)&-lK(@Sup+<|8U>%%TjVls_nQsO%2Ha z67T#3ed0qlW@449c3?QKOcsew&Gux}q`Y6G{(!O&Lz@!k50FIudn#hRrwom9D6xeQ z2q0M+Ap_tfT1KMG=Jif_%i{)X8b6@c^HVF791?LH@kVf*rgciZXhEJ9f({&Bj@YRZ z#Qy``BX9pQ^<}P!0&B|J;>Pxa>F91UN(3o&>3BG46ggtJUR_4@CDO!fKOvMc5sI?8 z1`Vgy1+ko9db!=H1zr9JWJM`s`~yB*xr0<(cPx90xTT0E5yiO8Rc{_x%;y(x zo&twT=)^&lBA=576Q2_Z6Q7d^6Q2_a6Q7d_6Q2_bhdG}ve$9Hx{<+KPVoB9o6C$gl z8lX@fjbtrs*O>Z~hcyaopm1u7$+}5Yru8THX`Dykt|yhccey`zfr?w`?RS(rv*hDG zbfekn89wZ1c=y;C)Ma@wK2IL@Ecm=I*>96=>QjB5grWgrN-xWK{scpCfhaB zeYdhfjq^u39yQqck81$$itDi9MN@T%ZcOSB=_I50bNe)WdA<=MrW+j*q&nLsm5HYh25X(+}@#7u))SvAKPi zW#0brzJ%KR8u0s=XdKH2Jg%GLELR@M#Yc$LJywTMDxX8$NBYs|E8?g|FK&&EzKU;h zS>yE-yNfiXP1q#oT^RDtd1fQ*c|G2NM|jIL_lf8H1bjYj_!ucxtH!Gx|6@Z(s?_$H z4}qbl5K9cE>qTE{d_8cQUe1PV6*=rauqWjh%$gP*MyB-(q|p02EzNZQ2LdYVTlzSU z+ud7+1)KwhpLY@4IJpS@XNB6bixXP*yktb~HWG$WQ5w&jgCr-WouJ_2h$jVhZ_hod zZ@j~NZals*2GlTjEN|^p?Nls5xjV0a^s}b>!l6{6s^Yv8CG@-M?L1 zXL61Sos-kkGwje~u|2ovp=+A1l+yEQuGGKAH`U=F=T&gv3`?Bw0cy(?PC@uL9Fx+- zX+@~}GhH8Kp}n_hOl+RnpFEIH+6TD3Ho(#&eA4=g ztY@&BB@OF>Ql3jGJhK+!fk&Az-AUmxd#Qy8t)GO6#3k>eMcjgz}1@^eL=#AHYy;>(OD)4qUj-Fz?ZsU-#Y0vV-K3i)} z9-uXF<7a7f!aQu&6qcr}WHr1iQmhe;-}QNO>&ZG~vv=yJy#q9U)h9j;UC@otXoo}5 z60FXS?W;-EMO~B5*Ss#a!bfZ+4zSIoXW=;7cOo-8qo&N%c3ZuTHb9UK-;oy6%dL%tB)|xXEs?Hf5MYNvc z_F7j^EEl(Lig~r2kX+sPqtdu3JJm8a#l+O)fRt;RjH718$ZWZ2+(|caH{Z{wjq9Mh za}H_>?*B~fyfcq2(r)qtbp39-mZ2vo?sg0^z4a6azLUY*JR1Bll8F-(Y%`Mup|+(^ z&m2Q&^H_dLlVL9}K>@PX)xJH`emo0y9;VcKRO@FSZN|Ra+}y0&O)tIC@iHH?=Id^8 z?&ZEeff!o~|3G*ci*{s#qy<>7lau~9uV74eN)UB!1 zAN9}YMD6Qy$st{TqDsstWT4HD{sK8L%n@YRpQ!H^AP51q-2wz5V0gCxK?uOGX_qnt zAz;aF0fG!0f_`KEQJ{GoUEtaYzn%^H7+cr|!{^O}F0fyx@r}a+g>%9q9j*nd2&5_w zul2`85-k_Y!_o0%%~*AB``)L1z6I?8$1GsRxo}ho&^Y6@!VojeipCrEQq#*Lb;Lzvcvzizi|?UL)9> z+VMoS#xJLPSKA8K#WR9Yy6`w9#=~#Cl{Deo*@13hcR;uKsic>cat_Q5*HZ7+8hPx! z7Uw_4;+gGtm$m1YiyT2POb>09c*?%mLt_ z1YiyT!qhS~$6jt@S^#^yPQ|JM7Q-9>RwV#)05~`Sm;=Be3BVix4ov{&0I)g%m;=CJ z3BVixL@F!R8~_ea0OkO2L;^4efFl!tIRG4$0L%g4=mcO60BQg$#T@gRf0q{Y48L;I zA5cRMmV3fYOMeRpeu1SPoSAY_BE=Kj!V2{nTt-w z!KS=LboZ^*f03R##Xo0?f9~(iJJQXG%i$?%d^=`NxYiP%n&x@;tL*TFWG^{gtdl+N zM#|g8{F{f_6pyA$|DMOSuGI!WcrlrE`&@1Iu$b@V_?QEt^YlfveL7#AjO2*(B{3`aJ6PAazNG$r&KL>W5SoiS0Pt z?*7(9^*X2VI-0ccl4D`d%s8cZVEEx_iVAPuLdWXLmzTy7w|7QFWBV8#E|ZTY_3^_~ zNf!MCH&-a&>>ulI+)fe>&yWu)VO7%y7FWG47Wh*HK9YUrOxgX@|P7ef)pzK)7Xj#sikzKecoeasi=6uy zxi7YIHY#zS4(Q3n-uX+^UoKI+OmwL}(PjMBSS6jUsEc#aCi&-syc~ArR^wKXvO7Cn zl9+bK(w3itcD!{`TZ2`W$W^&%CZ>3U<$;55jW&~BudwaKYrK(APPVa&elfb7z{=E< zypN?96`Q~W;nN+hvvUQlV>R6)SzSd?O0qIA(!gSocHHtpr@UIJ;)UH+=)UaQ zxabN{V3XCDS#2s-=Y200E4kT5<6`O^Z9jY=`RY|4Dzgvi_@Tc#k1O z_{}YZgl|$R8WK^-N%iIcPu-*VdcOZ^ZS+Q>MK2-&FI@5fJFh0q)_tt)iRG52I2u{@lK4^j%y*8Qn}stf#Mf zdmZoeeEU$(>lLutC@X44ZjiQST+}+(MLN$yW+J<{&UcUt^qJqf z$oVeT$1SZdG3Pe5|HS(^(iA=oi{b0Q^G;suuow=hELY7g{QT$$8qk#||Fi}%@pfBidM{WPzwrGEdW`uX8) z^!-F#t6Td@jnc`m;aoUQXH3{+^zX#NO7M0**zV=%z7K26nClC2iEcTwd;52__gZUj zzjYk-|8M%32vcqZpHj-!|~Zw=fVgxH4X#uX)c8FkFiz9%GP3%{X~9M9|X zW-N9*Pvydhyf3NT6XSAEaOIxN#}P8s-D1kBxB20F$#Q3gBfTrxPlWHuUtZ1LJ?^`4 z_Y{u~@Qm`8<&PZ$Z^f(mY1}0$g}Tx@W-Y?gevac(=*7~uC5n z2`<(q6FH2JqgPPq@C$+(o08EhagRv<97M0e>2$x!51SF~>wbwk(LVR_F%9xp<#+uo zqdi33g$F;?6l7Z_#N9!Z`T<-~qeD3CSTl#|LhYP8y=eO8ysi9nO3#)@;a5n~J$Y4X z8>S~d!&98PfYRk$t2mG!zMDj*6_2$et^gMre%W%gLvH`v<~=%mct_h;h|gA>?i~~F zpZI8c-tk^HZlwoVNB#7#(NaUZ+idhceAPLF?VFY^&XfZ#k=5o;^lAv`ho7M2Ht01X zwS&1^lA{|0Ay4J6wVD1k-f#KaSa)~Ar?NI3z-v3QHc&^_E?4bgUPyi{<9f-#5AO$; zWoO_VD4n&)qeqz4hV4>mIjUBzjMzB=E(Z(?M`Sf<7 z2DN7^OOHA9c$@c4lt6{jmlR_W>*k1ay~A%$=7_I){XcbTM!ie?Ofapaexdt(q+|TL zXc#^SBB)YR2rSZWe<)Fxm8rHrpAbJbs52Z<{@#F3iSnRDne~NBzxFwle-92@C zQJ>8AP3r2R)UvI-K*_g%Y^d>7jkp*dZgbOzRKe9~`wWB!#ehkCygID1hwi_B@f}CctHw1$xUI0A88^ z%mH9q0x-wR{N{JHHFh1)SVFJ3*Eh@U*Ej7=&UnLX)DQm(DWWg+P%ir+@&wVBs{+&9q+>fVL)2|IF{Y^=F za{#ze0KVJxWue@X0}acoW-`Y&j9e!IU;`w&xki`oyyT#z* zeE4jxnv3s0Qd%mu_4Ryrxl~9X;qZp|`$l~=BFwSY52sVP`1-Ba%%;9%%zm-Nqi+hY zowLW^L=wH%?kqRcD~C9+JIz&)2Uy4Z-W+dsI5mf@AV1_P_^<3Z_mBtl9U!E}eYo(G z#W>TM#(5UKed{hyT4xb)Xq`&5Hx5`ibaOoTQp)-kWkIUOxp0f-s|dOlYb5vwH;wLw zfwN{U#uuYZj$mdL*>ipSa$=_Oa&l-ZhM0>?ThVb_zO#o~=@pM~GQ8f7IP~mWlrY`i3{d^!qn1(nW5IbU?AW7lzY);dQX;As00o0Ky{h)kIG;*tzk&^CY&r z0h~M9!EmwDm3j0+kGUHt(9XnH-^T5;##{D6Hy3Lzdjes(sZ3lcSKZ zCqnk-^}1V9&xFKxcNiMUdmmUfjeehnF=jtg!f9$1>E^cmz2)a7@{ZL`{ zLWHURyMp>$1fX1a5V^7Tmzfw3P#=hon*ll1QJc@7szk` z#BA|qqQbt7tZQ^<;=E41@vr!~yf)u>557#}>`bnOcw2d&IM}L$XT}Za=i3XfLu#FX4yd%xrY&{z@rXbJBsb#Lh>dqA#`!j~e%; zM-s{h+mLoI-aDJSP&}g7<3@!NRlt3eS2@eM^}0;)25+&}XR8AY+qPq$9E1zWp7UT? z4=WGv2h=&xu(}#rU``j;|ES$YJo_|r8OaTz$wFa@7S_Szdn+b8_)kojV|ULB70EpA zS$D73q==OC(m1=vIJ`QnY?nJaevqR7LT~9w3H>*DWA8}l|7)-KC+~34U-m?c zXrCWK??(Q4TH4=7kIXdx$o8nZfG~IE*u6xI4DV6vkGt~zAe;gAuANprtR@eSfgAae zZBX>J)EWKp*YeA&_QzXEFO!gI^TXq}lK>9wVig*nCA`h3?MC<>zvu#soq@@uml^8g zq@89xt)avFK;KS>9rQ8Ti2Ox-Bdb-gs&tWSKhTW6}uGW ziPJihoTenVT2TrK5hJ)IDd%r_P-a*4%uu#4?>(Qmk3Rn4!}UKK^4j3f)z;;;QJ;(6 zNux%$^V3}&C`3oVym|r);i4QxC`NZE#vCSyLbM;j^&gmKF}Y;K<+6h~F*$?;(#WgY za!~d11Xp+d=LzA;lTSKD7;Jd}w6G-TZ&CRgGmVq4BPmM&guv{JI>}-WkYtiCE1zd8NYcK znyZ=4gBw2lj+WD5i!X zdc~Q4T%aV31?`EQ!&m?O=xm^FvMNOHC1>s?ud%0|2_phH#BDj(7D>Rjc6>e+!am|s zLiL1fCfX9m6DF22dZ9rwuGEY0XdcLU4^iHa7>5qYmG8hC7~fs_2AouR-yz3kqxXSF z8ndinwm!VrWgOk@@GQmA-;cMedT>6vh0&^0KOX>Kdmo9F6=q52khU283n6u8EFC3g zQHbSNco_k)iRWi+YKbqq5Di2!R#>vuaYh20Ni)T(&hU=C)$#GQ{#;Y~yI2<})(%eK zPn?&C4Cmt5nY#w!H9rUrgWD7m-XMM^+Q4VLr^I7nrN+V3fVnM~!?Bp3PRX8HJ1%=_ zQt$43bT}pSR2LPaH8@y4=}6ASIQd+{r;t6>>J>l5^8HCJqoDTl33@D>Uss9eAr5G5 zaQNTFRUy2W#53O@hYCWMWMrdDT=khX3F7(*l2duj|HysbG~t`-6*1Ql13fs|C;8SRGNKv!R-u)p2Cf78|J1UdWn(Q~bf)g= zVTI@v9LYFc+A&V|u@}i@-OnCoAcxOyilu39&SM>~pFU-h{@reZ_v|Qam%cZnNeyAKb1f581VyYf5 z-mM|~Cs#?z#dNVt!L;3n*MCs;7HBzJ|nVDzj@fM4d zs6Ps$zcfvaMD7pdwI81w9)TOd!qkH_n@2X9-CWql=WoxBPwW40e5}bMW!r(8=yN*s z(Z6indPikAYwr!#%h~Ylv`A&FCmWfj@q8rG8ga5PbbbTbJTsTiMm6ZP_D+HER-{{d zC5dRdpX+Rwy|?ftSUBf{nooDj3bWGqZ}>*@A$CNt(QMw&mp4#8VcxmvuzAhD8E}3Y zxS%Fq;VwRw|QVJ4&5WY;ra)B7$H@`#pU=V$cPx#uYAP3R*n&t8h<-*RJJVEqL`I4ZocLY5W z2TA0*MrEp-xH1vj?nqEI2Y?+3z#QPN^KaS=dOcqf7UaFT!}z+4Fx6>L9e#{ntXKlq zo+Z3(aILxOeYD-)jGd0%rIH`sNCtKGc2A)POl(1#3OQoTiJ_b;A`aka2m3#9z{gc~ z9Kb=1sen(U0?^S<1$;6U0LRIMA5vBbo!f;zWqnE!a-qeGO9o%zeMa2pP@p&OC06Sb z&`+LE%kxQjniZCGt%u|^n`M?lx0A15ZhnS1;d`AMqu)|^m)y=;_8y!f`&$Hx$xid! zlQfSx0DLq7m;=Da5`Z}Xd^`b|gWWQr7~ZEU@gimlZSAB92H3neq?8_c}@xPX;u6wzFd*UTz0PrYxB=^1ik+tZl7*Xi_N6t6l@heK(3rL-~N0l z=)$*>Dts+cZEQl__ziHogWdGXk3UTL?P9`@5Ib3Wm?<-BkM-rA>M`V`u%ekNM_buY zjmx#&R4HL=d*!1CDY_$~jFg!#9s`k_yvl3o>P%AK|ZciOqy6`%6L!yBzgBBu)9fq0j+}Y^W=BU9n6%Vcn9Tn<&Vx# zc_3z6$5O>Rj=vRe;V14-|4Nej;_zWUVD<$*(HHpvab-}L8Y{U}g6Q9fQr+N(?;=iZ zT`HtLOiDqmjg4}Z=D!oWC(g0>Tsh`*eU>#>Mvw(3D-DUtSUy*YzCynO+Z6s43s(qTE}KE*{WL|HO!+19{ZH$2T$v1T zE|Xs4MYK)yRT5Q?jYsF#@YMICI*K##5jwncMqekuj~?MS#cte)RvPBYYr%kRP4Sy( z7Mw>9%Gssm<;}}x*gbL6xkm0j@~sx|hM&PTxst1ICwA!}+2|YO=(-8_-*#B9`&=OR zStYbPBiQ%$yv^Rw>%EndvBeh;1oB_hv-xhJlgqTOf*Lu$73mYSuGVMVU^{bnie}%W ztiI@5{0>PDle};=-(M+@yDX3Cnbr%HEYoV}GdJ0~dcc?&jA^I+#n5o#wz6wlbpy1#YJLcE;8cmqD=O?4@5xbh_Dik>i(f9eC zl5dB+Rp&YRR&8}L_4*CO72%L5D!kw(JqY^QE;81tuF38^!9!*UW zhEvdsjmrTTD()HA)ai}UyIk95=`Ei3-;@dK`4>v!(a$YtDW~zwkRIllR$-&Lp0)ct zwr`rdb6OAa&Sr)zo=d>2*i+9H6**H@eBZ8K?_$GwF54U30hemKYx@fu%pQ?~WivTJ zx%$`qfv8!YaHIO2>MTD55u)IR)f z*P)kKbmYQ^=@jscjJE-Ne+#XGxs|!i$3U>ep^wM;@@8^#l5ck*8$H1{dXk?WW|trF zoeZZ`BYV6jynQ>2+C+PGzPF!OT=TkLZ&Lzp0vN4Ec6G2HRt7K@>4<4`YDn$K=tmEr$l(tuc#UdBBxB z%=LHVNZV^35A4l|-~EF;{qXA~IZR@vAASR8Y!a@zXZdULw}Sbd3!NB4;T24c4#nsv z!pLV~X{V?jC294N#&KsRksL0S^_#=T2!b`J9Bjl@_3ELGe{Dy!`o(tP%h!|q!l^P; zYnO7#R~y%N1_sej6*@(p%Fb!KnS{1!^wVEC8i_8ipgOFlVp@0D&Wrd)>tG4SscoO^ zGYa8NaJ8Pv69cH&kbt}rj6rO zFHUgujSu{z{;(^Ktf=Rt(TSd>JZHi%`t+W0Nm<8C;c>>fQ+ON-et&4wYWIHmb88`W zoL#Hgk#)O{`;WT35m&zrNlejh4glXt0OoM(i2W)5k5>M72~C|X>SEk*wn$LU7H!vr zv+LQSUDMskpuFaPk?v1c-uF7o>vrV{N_nr_Q+d0lv+|xT-39)*aCe6Xg60)G4I2Fi z#N-y4aTVeMT<6~$G_O+lFBG0|mtE=eSSP-5Jq3Mk`b?!u)91O;xq3d{SzcUEL7$sG zQ|Z$5*)82Z7&ZKaZiSsB_qyXq7JIDC?DRjkT`HLVp}G1BzWNvM;C&x7V&@O!T=Z{* zHOt!3d$jFuJt1eM^`t)YTR+k#d^d!4m)%sFOL4b;EN~FMQ*bVF6(-s6*D9JWs~oHk zn*)IIGJrYm_s3PS`hY*KZ1k*^Ww$dIkX`eav}g1!SGP&!cs~U_A^$&4_H7sc*&=3? z|9>j~@3{P*O!EKHbLBsk?7NE3?w9b5G`_W$Cl5-MbdcEkRFJs4=ptGg8O*`@`6&Rq zSfUDK`uNqf&E+=cega4~ua_ax)EDS|D$MqC%}sclTt&~;7_OFL`CIiHUXDKqS2APJ z5wt$Jl(p-hm6u&Yf5o?d>;OOf8IEv0$p&U{8*8Px0cW_8A3yv}5)__= zAA7P&_(k%u0BB8EZ88$9# z*&ILoIRTZW-DG5_Jgr<}6HtgE1RzRy8zhmYT{rfh4_C@p3uY!-otA6KT-3#=)!jGB zk;@jD8P&MNLS(3L4xrMSBxd6trc^XoFtfO!e@J*^(FQ@;qpPX~{tn1JHaBOEdtmN| zDkS$US=nJ(eG%8@Cy=Q2YfqV(l~-_!)YKtG>K)WBE_c_;>KZ? zw9Y0R+6xRP1B{<5V#E}d z)od|`_#STB-3ZPhndlk(v`*Z?*^IKzBf5&dD}-BYhqOqBPiyDWQ~42&0npKs)w2VI7+2k#*O~Qs*Q0+bpD;wWO|bzmyfYcx54B|@Cp)lT?GbI`@cL_x&1ptIn!ob#~(&By)qQ8rNG_p2l|%_IU@L;OOXiUEYajdi{e0 z`M58NOjSVp<+#b;^ZrKNf-S#g7{?tjT`xDjewS2h2;D3?w;c?%j#`X0y3g9Z4hxey z%uZKecU)(Bg9j$Ka$fTAe zcH>MsDOq+bX`96tOA4%7V?0GIx|%2YK18L5@S-4<8!khH>QVloi~YDT9t!nAsOX{QK3kNN)CsbXa`K@gv zf&7BdJ)Hw-KSiwwnsa}dWD`63!X6Px@{=5i{B%jIc>hnL$KsBYZe(4ukEpd(IlAeF zrzn(t?M&$e@mN7*SROR^f0 ztG*0qEg7R9VoNn~W0t0~?PWBYdBs|tm_oMxN&2guxerKDpcC-$J|S(|JBL@CRo+=d z&j)#!j1UeYdHiq|?herK1-u-gVhV{(CUlvtShx5SFQz~{(awAF7;oI26g;?1AubyA zlfCm2zTPzTb3>X=D%7093{gTjPF)nL_3;$w)_t$FJN()}m*}i1ImPspIpfa+~y_ej)Pq2@&qYwRt zMAj9}0pPzAfH?ptTZ>^10RNK!%yF{cFg_G2YK45|c+6O)3U?v~dg-43#mxbAS&IZA-1Ks>ZoGx^ThUvgxi8`B*|Qefev_Api&N zpW4Fy?)*FTBU30iXQ}@zI?nH5gp3&VhP(-45CIl18gR~L9lcJ)SNDz)v}udSUleX{ zWEAp=s5H38dBX`K%07MX1eEbEyf~Q~xbJj4kwY@3PtDkv(eU6o95*+-g;r*2P);3^ zn@Bjt^}7q(YkLK?8II)^wr>i;o7+sc5G{bd9fAt9W;NXaZm*b z_4z+ij`e7B5Knw;9^bvyU*oetGdT+s)=AMm2_(5Nqdx6rtxkC`FzcO_C+ku_wjl9Cm50u>Ly&9laU};6;|U++ zYHax6hr|azL8*h=6cQpNR);wm`x_Fq{si^>a1VOT34dH+(SH*Q@oMXz@r1v{!>#LB zWkd0Cfi}7K#$E)?a-yS)_dmqLmYSGdaB&Tu&C5=7Dy;5;-C5BmBJ+oy!>cai+F8im zRSo^{KywVFRFSzos30A3LG(Kc(wr}zaRyoCHKrIgLY;H;zZde=lRVzI{LZ6Yw-0+LbKYChb7qvd_hHS77%Lmqd?LXUUnS6_%j>5o}&Eo#XkV zP|H{vs@UeADS*9zoC$Zi=o!5AI1z6XQWhkvsIOh4a0#zJG44&ng2sh1@mI39SY zH|I1r-bdM^W59%mKu?o6!E)(2gWL7)I-}($`jRkB{OUw;8vF9F|&V@%2#g4Q&lDns(Cmln| zMMuJXoM1hS#Lr^U9oDncgy}PSKNDtlEJbw}AD8}ky81x6aJr5a*p<#7D_~(8r(=nr zJ8yfNACBc%US7}^YfB%l58y);_Rr_W1sOptBYvMZOmkZm?1Wscimgg6g3Sb@|DNk> zZBs_&)=Tw4$o)tnYr24`9CG7|X#(!B9V<9SEptYEWnvH>hgXuFpfu0llIAf7fSn1z z9G1gLihG3ixaCS3pDa!H*;aL)qG&JR<~zPy-fBmj0$wx>Kh8TDX#9fk`2>XP6pM2H zo|I#bs~ECM7oN@!7Mv-e+}+iB1oWM$KI7s|yo^ek=zSfIow<*R96RatgWD7mzKuSM zrRmkkH05P+b~#&V(O}|J9Ln)}l^<`R*y`ebJzA6NAIatBjc_;w@YJ!+^6(|T4&F3B zO{76T`h-6H(Wg`~s=@-?b@ABI7j94`p?{P8s&QiY|XBNxUdH-i;?gd0`(r%@eU|3q~6JDsQqyB@g7`@NqKoDSd z-i)MhTaYXnB?!slu0QS$+kB7-#~FZ6@qs1YerLEf?P-WJXHZ@u!s>D?22WpjzVN-l z&)C-Glsf3|f~==mlhPiOWL75vhZO z)aC$?NdV>mK$To$n1i;?wD+q0@ItbQrjajCxI2%Jr@XYQapF0WYIG9Q4=+}%K(Y3T zJsCU`UxcZIS%JG6UrI%{1&Y1V5?)Tq#+nzf7IE3T4Xf51TJQZmmi zL4hNAI$81x$U)c2`tUMb$#HCF#L;+0S>$9UQHA>lEfveE-eO`@_YzteXihYT_V$G@ z#NfOlXIh0gR9?k0zq(FC<=H4{%Js56j)-QSN`^011kx6jhYs7A13)POm}Ad(+N%%T z2HpFhd!uzOHF7ggh;2rd{y9$O?!f#txG;?9Nhl=M%y8qQN@B8lHONg|pKzX+8|V3? zI8Ol_2e&CCe5cx~@wAfUjsI9F&RJfzuu(ma5SM>=yUMr5$ftQz4P4QNPw^&cK1!zg z$i=4hyD=!uU9TkF9QCd6MbslIf|R%x=Larh?m5kY^HB*nW-!MRCq9^IZ@08{EIn3I z(UsKSc%Be;(Y0Ku7NX-xIUG+??UF`sPoM03T_1ZvPI8z~Z0RcGNVvhtezOZST3s|B zFq0lk&bfd(l&ub$A8q=pPp4~7F=OOBrAo=W4v?BKqi*u<*f~#6+^*v@9-XYSuebNn zPS&9-&JABCbZxSeE5UcS$?keZqyKd${m&elTQc_ebA>uIKNZUYub^Wf1iX?DcEF^} zZI#=dbKjY}S6%2Bq~Y)oe$d$T&1F6QYL&3o49(1)pz;(#*9?)Zc^L!0HB-)AW@1y@ z+#vL0watw&wmk{9<^cWa3BVixl(P*mb7&2c)!mP}%kJ6bwVTMkc4_mo)MK#HdJR?E znY&+=>QOuFD!RRq*n1G&##NKlB@^i}IJq``=i@FBWmwVIzCpocytYk+lMA2fxNsuA zv+5GByw$b4&&{0m`)@$`a5PVR1 zO55oIwknNDG`Vrbbb??q7T=*I zk0R&BtX2=0P4Tic%bZN7tt>l|h0F5fl951HtBOI#w~eGqnW~zNsr2gRA&rbn8XuX$ z+@)ieLkpyEhpNGKAn=biv#o4c!t)=Jo6TxzHaCiJGy8PLaj(6iqKI*Nt{&0+n2fbl zCZn$%zPtGl9dj^fy`E0Uh1+k?r#VAB|8+Qb=02D7TXE4@bRd&2fVp#j>jC)*hPQU#>B=XeV1Atv=OxVm7}L z+YdsdYRwVIi~P5{mTfm$y zr8%RQ`)6*M&Fzqw<$e&Pbj4(C|Hj{GTrQYAP_Midqm}M+5TEc}^mJWAIZS@l-o|a` z6R}{g%7>_0tI2IPy*d!K!##HhJ1I`QO}$oE7QfZ{?AO$1`@myxn?j;FIQ?RHHz>$3 zFKHudTld(#BbIZcj*j2G7fwlA>#N48&YNnuUBlY6_RYR>p=cc`lfZu63!#f4tYFc> z{M6^T2;>yUDT6D|mx(I$hrk?R1t2e;?g2_v(UCh3_zl;B;PB?S&&5412x0rB=9i$! z@Kqc-?5lQV8h?ed;g>b?lS^fXZywm${JJ21>voYd)7qg=w#5^KnL&)v-^rIfn4I2_ z_4cA}^kQDTR)3zJDX+dAsH?-S{kfF0QRAMp-8x0SUE_6gjh2>5Cg!Tw_Y|jRu2{ad z;axEGn6;~^UamAM-Z;j*&M~)K?3i1K9rKEnu%A3`L>o8FJ$J1Ev~dxSn0WT0bEUZ) z!fexkwz>8$4V$1D zqq$(fhQPQowfA(^=j^lebZ+yXf<`CWuve_`L0Ep7VLy+gHLO#w%hFf2@uRDq##G>Z zLb_eyTvVz=bDD?H{CYfHJoaQ-Vv+iu8^IV-{haJ`*64BQc5kfex48MjA_5yBB8f-RWVP6n|WiISdbP`wWECLMJy>C-Jv- zolpgeplq!vP2Lqt8Io<;9P##{4D57bzQn8snj9Qm4D;Gc&Rj3|t7uel;R^R(X$Y}e z#$c&bBFX?!>fc6(lHFPUaa)IykG@Dtv75s0hW-uRjB?B%OND`@(IOJ`YHK`aIZJKgk$+ z8%ms&0Mz9hFt;JUp}SCC(v#geN8O*%cRGd^oPAO^>M0J4Sij>6v5fAtIt!ZWGO=>F zH#O3xuqaWC6Ju*+nIa{iJt%FcY!DsGOH$!_(@Z(f&i8VKx-#JetGcJ|Hfa2f!P%QP z#)83wFxMji)ynX-+JKIG%v>suiea8U+17kMF(0NSynU&2wtTv~hmcjstPD%?n<+5f z>e4F}!RRlN>o9}v6(|He*1C$rDe1+aQah2B`xh!u4`*?)+)0FFE2n1$#$6tnfyIfV z!Zv`YiyBPYj@{ur`&C8-uwNN>p+DYBQ}lq<&wU%Z0*ppz^YrumV~DZW!~7nAbjp7k>6(Y(~5C zPM5bAIoF-L+GU(2A6*Z-oZ^t`bzC9L&5YC915j(G`zUum$}O{WTydwmlU-=3HOZI>Pm>+V`r=A1Wmk zR49%tEQCW;ylB58Gl~PlV}-bcS>;%nHDWW1BWO#3w4tpqJ*dVb6RO1U{> zvcMV`${ z6^M>DOAmyAp`-{LmIXFHQLl30epJDEp#m~-XA45Bz?|YsgQGqH*QSBdtldF+4czd` z*q!0iW935JrZBrCtL4p1G%DRR=)WKf`=Phr~o(oXzeL{n)eC% zly8S$3)B|Pi^m42*Uw*dujY3Z9Aui`i@zU@zn|2%kACX*?A|LHHI`nacl_S!D7C!p z>B`L+Dbhu=x%|!y!dj^!DPvoUHuNp{W)8o$A>8E))reJ%E{&pZW@ZL>6~2PHY`4y6fGLZGfyJ-4Xto|b3@fx8H9Y#(_Wk_Kdw12_C6MacUcK(TbN_oYUKo4b^M%jrDEs zy6VOG#@TJ}@zpc(jq}>x!>h-Zo0tiehAZyV?>=+gXP*1acb^6Bv(SC^a-V^s`}(2U z#Mz*A#Ydy{7*K7w3n`nhF|c%WsKdW|1WM|4 z_?CJKy-Xd2&Z&OFzJ_&^PyDYU(~~VWbLKJ4QnGhK$T5Xo-eG=i11OJVC# zLcEN6gnuO8RVxuQ$(2cN3As?wQQpyl9J90K)AXKr3>^vZ=iuW zma%qfzdPr= zpY-Z$@~MyNd!qp_@vUf=S=nU~{s9z*uX>KGz(+PAm-A(RqPNN>GB4F2dJT+^vFGv( z=__56>v97vdH>?PNBH5Narxth;JC0I{UQ(F^W|2?@J}w*f^yen|4`!|>Y2n;4Vzu$ ze=SCdZjSW4b?dzT4?$zmCT zORf&4d?d$=DxZPzFd(E|t9?ff$_=a;*+=y|v>ob7LmO$NwhFK&S>uxShkvD5{QElp z+}K}nUu)Ynl&63GKr1fKr__Pg$lS&++V$_>;M&+xAg*F(p?V+acJdh$?nd5{tUUh) z0$t^vKHXTM<{{&;*i{>Ww@^R!3$eX$p{qu8s~@j}kc=cTPT2doEGg18oPKi~0v?R& z=e`E6bB}TA%^Kag4=pHMR=lkFDEaJ8d(n9uTn_-(V9x1n5-%M+H#e|yDa!@rkD*%* z)G!)~`&Da%&b0~wdZ0Ge6%9g|W1VDet|5SyNdZ9X2h33%9M+~J01*%C-He};phrlaT*-e>T@zEx^YyC`?YHyHR&#GwQ6KP^~-%4 zFQUZUbCsyop|L#cASMYU^jk=IwnywDIBaca%KEB{yE-9*>&L^l?B26?$$ntb$m6Dm zz~J9oo*G+L4CZdiJ)%EL{lFx5ZtYAna1SOvq@{_rZ9a%&XYMB~B$~^JH@Hn9I;vO= zd-O93u)Fb1QQOw?wy4^j+CFQ?AkW}5uGujT9Ss7r9X<#grSoCu_AJ-P=uDT6W{U$W zmyHz4%d%*x^TP%1o5`J93-T8a7wRjD1NE`73YK41n|P2{`#b&lfzn2D+OWRMbbtfh zqqjFkFWD1^rv0<_E{SUoQHX6n5tc28jPYC3&J5o(*F8S|$P*l>3df+sHVx1Io<%??$%iF}^P$zX^`~W?=D_0on=~96oqBA%pcfoP!u&gEK@B zuCi$>a1I^rBHnfLnqMcE)?vyc(PAhrL{&YGB`^KUVwIVlJJO3ScGyiH4!C*tbj<&` zbar4LrwI)Dre~&S!?}b`0eNvq8VKMsfQ#qky@SbbrSLQ5LphvDh~6d&ws2}v2Rq9g z&qFPt!_x0!n$4HPIZ7M=3uob~INf5Cd{&W9U{^1ajuk60W?PJ)K4W^OaULz?RFldc z8GjmTkRCs;?89D*=q~xJF9^15B$$J>v!-Xb`6ohpiM5*Sfn|BEWUBOdul5Horg1xZFs_;f!<(^?SZ7J+9?ktrE9&~=u|MIf}e;MC0472 zuus${O)l)!+iY!0U^Hq(tIfy+jZGedA%c%{>6PqQIMW-`Z}@{j8joTd4Njz^?Jo`0 zra;M99-;Po+djB@rY>Cm0r}PExQnG2PX^9Kj{+USuEX*nvEJWqk@gVUWkxm#zd^Xp zJWkK`FXIzzd4=m@OL8-^m5J5l-TW3&x?GQ&o}Hcx%ha}e@=#rV&t^w#j~na~-MX$t zuUK@uD}O4wyDJ~L*k|6Hwc6jNz#5-&u5Qd zbp^QuU7@u1i!?1S%VJA1c|Nxa)3J4mDAu{Nb;yooNnLt|@b3p9+A_Y?$|sl&!_MGJ zi2{zGfcnkO@c8`pD^L|S`k|xKW%PPiz0~0@d@lvx)eheXX#mUSRr!dxrS1+iGv%Ji z!*|1yA(g_fQi^Z$zJIbWzhxQaNo}Op5S{sRMW^H)4n^;nQ%o3vcNDy1z~L~BIUCH3 zc@~82!5niChFQNG;?uJ)6a$&Ay+W~&A#o${s2I-~0(Z$C&m+$@oZ8j}TvFh3}Swy1TRdnx`<2s<@KaT%`nRb%%1dd#D`-s{oHaO5XEX@Ep*_F@+t= zQDGOoe+sYvO5?@-Xe!vXYqwWf>~On>Wwmmd_(&o%eAr}$rzJBSOooHo6cWCd*-N&{ zec_<8IU|{`!u{|<_x%Nhq{k&BH3xv>6M#9Ww>ztSglIgzmOvSM96~{Lzke9#p*VF~ zqPZGJOA$ua&OwhL}S>kMVArZ)!wFhZPd&i@*bpfnq4iGcUQYOG< z11*M(oae)za^YcQUppOF49{(dxO=D61thv1mg|b>$dRgubpE*LVe0CntaQo4yWv9L z&e{EHywchmUd83a+H1MO5r)%I)Umq~UqfAphA6__KkeL8S4Qh9*EU=7*{?Qon!(R5 z^voDN*~}3=VyYh*24v7gN`%N3&rG zIi+l`s3VJvtKVe9uIGk{3kivdk0)H{W5$L4TU-bX;6e%sQK)c`M7(nzm^eB6JPH`B z+j--=2}Z;g#CWZ_#Fdz0O^UxjUyXWm5O84vFvluJ=Mic~$1A70wfb0KZ$*h;JGp=@ z$4q!4v7I+JwwTA)@Yd!-kE3uP6~3NPhg3KQlXCq*g~v01>$iw4-Z8X&oF|Qci60(G z>by+_-45PU%#AIa%Jyw8+uQiKY^$jF_<{@cgF+@e$q>Sn;&$3BZgv$D+01fd zT!)cVK090??``K}Yf)AS-m&1DHQA_?+43oRMvbwQwV_l!h3B-VMIR++9?1v~S4G@n zrG8*}xV>CSQpc%ycvzCw$gFIxQVuU=Te}@I4l*?^YIH}NiBBfokojXP13Rl3NMK1aaoeq9Avgh0KJ$bM~oHfc=uwG zqubl!{^W;el1rWAlV|a*726#k?kaxxeBg0^;p~_qV=SR=lUvH-B2IU5mce@tfqr-{ zzny(aXPI5~^+*#sKFehmi&D3B9iJ^K4`<>&JLK#@s^EAWecm76Og#qcd+Tn4>#UHM z+pqXe^G`G^%tuii^O1`&<9OBami}@}Z@dZ;idPBZqRTaW7d`bwI1+L7SUO60g%!dY zuhe`GJGbFB{OW&KD1{o&900CN0Oqi^6Q8uU8)tHP?t5_*LD@!0F6IDmbpkMl+RZn) z9jjPq^1^h!2m9kq{9To97CGuAg`LxI$)M|8?qVBnJX;{vAG`LemU0H6@P(?c7-vHc zF2_?Yoqez+kb+eDED&V}10#>^MFfg)Vu%sAi*ID*i z=GYsEo0?-Iyf(*PiGw-z18$zG?|F`$zqII~r|__|OwF(FZDto|7420k zmp!+uy_8I1n0v}=Z$I|(L8dG1UM6|5AyTTpA8kZoXL(&)?c#c{+2_U2kfFcvf=XWm zt75fDqS>YDIlZOmL`X8bYgU)-f;(J}iE(i-hs&rRN8$4%yC-~p#K%3$g6AnbyAq`2 z2yzPqVPl=Lj399{Ez2`E-$<3wSFj1^dslgf{foQz(D(k$+pzbv>0k`}^l6*#pVlq6 z=IX2D;9s`3kmK}mH~N_CM)$SFo$CClz|XnBFSP@C4U7%&c$Tixah#|%mEsYX;`{9s z!;PuHNf)S1l2|MRublTKaAKVeKWV9NWpphcJHeXc&;_FQ%~!(L65=MG%F?~2XZy!E z$bAX03=yAU2C6@AIvnA4lAt)9J64O+Gud6HSUg&WLO2)QLoXbfj;(yC87$n+Pc@a( zpOsUwol}g^(&@Q4yTn>`pRomPSYp$<&sd?I(9xTj%hqPTRVCQazjWGgz)G%q0`iS4 zW6POv6VguYARll$R=n!ME?w2}6aA^5C%Oqo2?RB+z1Sr}RW^*?J^V%=Bd6z4CoH&) zVwl_;m9o*rK%KFngh>tPiTe`)?XxDJ{Y?VeN%ZK!Z3+?Ft7`hVHklmE0bo1QLb~-OGE!mp-fdN50g^!&w^@R3A~li3&Dzhp!h*kLRRw`!b_8jhjz~E z;*IWnco)h_UH91d37yHe#dzL5rL1g>5A*T*`n=#sw|MjVD(?PAje(m9JDD^{z(l(qx<8fufT|4=!iwtM*2xwB1>gPHpFCw|H55%iRj_{P*}Ps~aF#8dc0o@u z`n-Xh5T3&~>ARl{)Mx4W>i|)r7e^(07Xk1!Z)X`I`tkJ+P6yWS_3rQVtD1MNCeKrq z=lDx#H14=@>*-KxKCYuom$P@^v&8u)c;K_WGE0~JASv2sfJ(dMPzdPwl*6@$Qi_%h zO$i>+J4wcUWr5uh!?CFU4L$?l(!0^?6mMutqK|g(a-0T!yV2Y-j_GgRLw87a&_8ee6I(+c#rncQ zmnWAiWGt!MWEft}Hii)~u7t!twT0xt_v>qY!S_z!tABC39YM6W5saw?4aBH-&!L+x zcU+Kqxv_}O?T5doy5R>I+kSXA2__3j-fH^C65V&fTXlqO$kXSt-pi07o=1HvsVhyf z|KO69i3b@ow%hsuj-5GAJ^fVU9|{T4OjVof@OR}Oc>qMiyG7{J01V|H!DJ^5@beQ7 zb>=orxjoNvQ%Lv`a&z)!e&TbTQT?f?3JEdotA-|fTL0yaRU0Suf67ItlVN4q)%oc8 zILgZ|&4nK&vgx_It49}1lZ;AfWL1Y+shB(_Z29pzhC`%iZwn{cW0PTp#t#pEG=0k& zqVdgY9G<=sZXf5TJn{L?S_G=adaJNP!cQosrK(ty((rElKIN?&`+uyx2bf(|)&GBT z&h0akWRl6;^a+p|54TLn1VR#!sz@&uNCFZ-Kndl*9Rk8ILqtTyfQpJ36%oOL4I4I8 zLP>z@_scG8jLEKx5Tw?nM?SinPWTOI=)>2(zlL#7;|ZR9JrUb^4Hn*i?mWVsHpvE z96gZlb7>b*ZSN@AVB8!=F7$Cx-NO%EUoFiB!^Uf9c_xo^+-Vl1SJt$lg@;_tD5c28COi)5on zTY<97abBDlI!R(B3P=CO$dKXg(I>#l&Vi?^+I|<6F#e5;nz{MZzo_D}0D1xMEIFeEDi|;2M z$EdovwS#<)%O%eze&uSn+~{99pZ7df5ylluJM2$x63yC;>8?}9YfUqZohHcB6jp_4qZ(N58cfQN zu>)RCh^Tors=OXnS@Wx2fNIjJOrgA?n^v~!IVsx3>nhZDOLM80NPjq+A9(tz+0?h< z`sTR;9hYjk6!}Iv#d~&?PeXR3J=itxfORytw0u!;4-~GqI{!*1zj|8yl1~TEPdebW zL_?$0D!aRSTG927Gl~@EnH?E&EzdgGY%FGXkY5z}UGz!EvMJuP3&m;4@0qvib?)9+ zDPNmaa4kN^1p}tGX-qTv0^eH*OKOpDnKFQZs{<0dAxIEr_AX|OA|mPJ(151UWg zYju8LkG&S=2X@`(N~_qX4POq%9BVigr>fTtpPL_ep6Rj^Vfd6aSWX0e=3agIfm4Ui z&JUb6Jc@I8Y|Za2h4VHbw`A?d|EJsjbwVch8T_BmKQpemxAT?WT0weiO!Yht?3lCW zPC5Eh2h(^EElC|W%ds?dyg`nE?$qTPU#hZEy(}8&aURtRq5*%?@yu``lA6!My`IS9 zo*gbtaol5N_?ZpkhN}BELvka7jlRPUMFU+axX4q>^?aH^rd(p5nHHe^D&$Lc(EMt} zR>O5&5Ykn5+Usgh$^8wR70MejhezvE%aGM$!VDKPO+gI}zdc6iJ!|*K18wNyA=!ab zM`pqPJ*dr7Hw={4bAvQLaNx*5e&CQjsMiAxmm8S9F~7c)Q9{op?UDE89<+9o4bG=F zH_~q0D9;VIPs0~(ZD-1qcXH|jgJHYJC-J-t1(nb271MfY`o%1~X> z+g)1#rkk(_2+`e}<59i%USmct*Gf6U`Jx=2Tioa>pt*R!SEzlIH%cLbx%kV3=q|8- z$m`5GI1%1Iz>N&I!sIY>69a96=4+{Tp%yZ%(lz6AX#NjA9B*2H_zVcB9p{6eLYxQg z@`>oUqEy?nh48^nRnn*NGr-x(HAtOdW&Y;A_ywRY6b)VZ$^$?3t6d+t{2yc4aeoI$WDU0Xq6*!)esggwPP1saFuv=-E>pPCYUuVIAV|%q%{mOonVvlwXn2U_4(QX zt!ABTwd#6b$n^Ja+C%?Hk-dN>vDpC%YHBm|ru~TO9F>M@DAHaT3a3_2V>YD;tsvIZ zyRuF3dkLYf@8*d8RqJ8?(mvHg*3QgNf!0iN798YGZ}oX-3~UCzkZagsSL005jqGXa zynCRUj!}(bTibG%TT9#7GxC0c9^GtZcD*zCEzd?{V^>#&u_ExUh%r|C(zD^uspL6z zUz(gvwx#N7ICc(@W!Js|wT@gb=O1{7@00z>xdg0d`nx9=5$ilTKJWJK|0XXdJ1P7A z5C;9h!5doglMA8aH0VIr<8*`@39&WU(d}!;+C}Il2F=F(@`K6U2y}Q010I}dw`wK=FTn4epXpHFI*$OQn^jEVasC~V*yd99tXNn7Rxk7AU zhczU}zCw;i(+iBxJ$beOqhG?elDE_=CofD@fhU`)z}hlN=J!&45j~6>0OCrIFaX5M zJi-7jihYerL}IBCgsaKsa#|+Zh<;4yPx-^Wdm&={DiR1sM=44CJ$%FXJNElsev{ve zN-|LxNetzc{7y(Rk|T0Kyw?*QUO$t|dp+9W^;o;tWQW%ekNZz)a-xuJM`DRDh zZ?z}$NQc+=+r7Ts;q{$%ukUtveXrf?mmOZeYWMnjhu1gSy?)){^_zCD2RghSZ1;Mo z!|P$WTG}6yJ(<=X6>3~ZQsp9B2aW$G4#~i;iFchKS7X;4+9dlO=~{am8@X6=T$#a9 zQ$TLOM%!1cgvTCu+6tN13S`B@BK@(r|`>(G8?8wd5{%ecq+bW;<*)3E8|KU18pjy?6kShE8Rz2O3A>4s#Kx0tNbF0X*&5WxJII&TU;lpHInj3P# zxzPVY=x0nm!KItq&hpzSioJt8C-?1+H?i`n=i^iO@CtC_PU@q%ezRF4xd^7+9B(Cn zpTu?Uz=Un5E@{a|Zgi*Msw=l%>Ir5p3ij1JemIS8wkip&m{=p@5c;?+RH_>*n)3lu zYVff7%$Q2I_Ek8aLL|@g1t$7Ovp~U-``Z|gouasx3~L3h0dC^|L~iw+&{@`@LZh&` zRaTckx=6DX!E{AV#eoR*lr5?(-1^R^>z1zI(B}jPtGtbnORh3{jB*?j3N0_I;+WGC_2(ro?3!GkmfTHlU6Y4CsgxJ}pG#?yNTl?x9=n1= zj&tP_-B&^Ai_|Bq+tCc&7~zJ9+8OQ}B_(EB8h0kwHMxO)q82=rv}&R8^A6G!$W=he z$xL_F@Mt?W9P1##(O3?a>=_&?-mBfe02OVf9j*@FuuMR(5>Njhi0~H@bwaKHc*aT3Y3nn z3b-vdBUr@fDzr_}V*pA;308(5khg7T+<58qj?S`i`Z7YKI+6%Vq<18YRwz6^ewW(k zxYB?Itz%E)t3NjzwbG5x#SU|AdEDSA$zQ4`Wc6iF1}*eayN6sYCU4Zl_8xwi#l$bATCQg8 z6vCahwD8={w_(Vg@pR%f;kr|kKC5c_;7du4k6KUV4j(!iB9Zqhzv;rYG<5pnD;3Yy zL} zxtl`g<5vLnT%VrCTUF?jlq-%p5jngLU-NoAcqS>EVuwqu2J=W?hELsg} z3ekG+9Ljv2m04`w@;O=;<1O=EWb>Zif@Eq>HTdk9V<1VRq6uFrm?WpCm~OUfVe!(*eW&fjCXd=hn)%ANErUu_=hB_)+cKo- zAWhfloG}iF2#yP?H3sNB&0-&-9B63a;fo!Nngj<93mn0p5P?JMp9cp&4 zMszbqUacx^h39tTg^WMeFG4$;gbcavijlJ#RFQS=@S5u9nj1 zED(7@qrPOPDQE?$9({Odv+(#$j9=+Vukk!RuAC6s{KZC3`Er@F z&&C6{9<=#-OidzP4<4(GOV&sJ2E!l1slLBI z_={C$Kb6XepXJ16yO+y2VpBcO3H!c4c&Qxh&oRb!p0r_A1r>y{Y6sfG9;@uhD?w!&qR9n+G>jlvMLRiyW={Eas(NfndnOweGW+m%q>AV)^d=4&^9; ztpSj5ix9ekA|Oqu?Fx$3*9WMt7hAvGKz{YLZgIpW{{)=rf{FVi^6N@9kKL7%=Yy(k zK^`3+K&h%{dqUIeB^G0v>m_-+KiyrZ7xOh{iz23Q3TDQjr&u1ISHQsbktD}C7R~pq z@N9?^;P@FrWid_bP-WQCxPx^BeFG}o%6zjR#BFEmE2-r<0^sv)6h8S4CkSGu9Fd(T zG`;@S;k839c%ptW%2$8kC@+QO#uYbg+(o|QA2skHfp-`vYQ{eyusr@rebT+1QQ@-9 zShnHl>uG9n1LDHbHwZjmVBB`YMRZep?;)9K8<2Sr;Jpf<`ZfT>`#iz`5byU013-Mh zBMboXL60zivZ~zA;d{9C;oI@nohLiT;(p7Aaqskg%ZGO6Io{MC~|j z-*KVjrOc*y38hNjA|9!dFG`v95qXFg22e27kgLb2wHAzA#nC7Gt25E1iS4}1u4|5e zj0oYFe(U9Fdab2Lx~gu=$N&%@_Xq<(s1;ZU13;)f7{UPKab%V@E-@Z|3h%-CLQRCW zM;k}bFuD?v88egooKEZ=#Jkk`sp)gZ7gKOn8veeG7=qKOA98sCXL3EQtGwS~1_lTaG6Xc~)1^H|3MOiBPrqjnQ*;HmDw!#`vs+ z4n029c0w^p*e#A*?SWn1Nu&=yN=0b>9tKASo8B9gpeSgaFsRK%W_w^Mdj>!LATxRm z`J_Y6Djr=P#i^&;l)aH!@1~oX>t;~maMQj(PW$R$41W3aTG7@$LiXG>}9N%Sv$8De!5-zDOC?<5W0j?OF7^SzODh(xoAVi zDb8KASsvJhKRkfmAHRuELnJW7ye;4#-eJ~D<9oKSm5slNSfs}NoAUZ9cY$=@|CNN6T^-D# zG)?Vf%*Kx0+gmY9M!?@dAhdqbdC|q6Y>`~v2CMTL-YiS+27*pr(wP`}=URE^nt5NZut#-U>^!{-nxB{MBu72l~O~{qo=;}7iKNZhL?0+xO;lLJ0Wc1wMrs1``j+UK`(IjcSPS!(6_adJ|eUcxb7u{$V{=`*?)iyl2N60{t>=(6*eNvl6X$f5WuNP=bRs<3=+eNpzTOy}6Z5Ops@A^bN z*!c3+c)=l9@DlZj_~RVJvMFYA`vef#sO8(>#9qTTBVzoNg0b6TA#@iJy4FY!6Egla zpFyLu0p9~M^etDS~4>8}7Pae25_7%LTm%!MyyJj3ml*x9f!Rs`FdP3f>6$gAiM z?V=bbQd>qTJA8#g1~yxA>(14K8=TX}CevU^oGpnY|TiJ9PdmD+R zGim42BHLKnoXN8T`?`sICWaj%+r^cdcVU$I+bnXp+Rv?GouSpE?mkZ8 zN-D#Qf=$q)_7&NJ*GmwHz-`z5W&=o@Ol%xe}QheY?e!kEF1Qsrsnx5tgs{5;MzSe|Yo6gPrl_Dc;Q%Pd@SIT|6E2 zo3$uAhX?=SS zpRN(RDES99QY$o$gz^$*MH^=VG_eiChMb(K3|}HKD}wqh_zFQp8 zURx+d{<6M}=BD`_Y8vR?+I%){p5ns&gbL#(Q=HS7qH$>zv|pk5eM}yM^?sA}e?fft zJU@u-h0n8~M7Apmc+$d`Uh~8K#D6aFBm9k4beN^zjwPO{q+=A4vbz&WWcDhBj@qp> zVSFcPH(t}^R2|(^n^3~25)BN;^GUOmhPsDPx&G~@!qs?4j%&{<@8Mn$;I-&->NDwl z=C^$2r#`=QJ_}kt3!D$rSmo}B=X*g$nDQJkxu9q0Q@7^E$%3IBIw& z&g5NIzq$|Y?m%}>ViUhH0ZCr6?dWs|c&&5H9ShMs51KmVoZ+4a4J;3?Yb#_e7r&eI z8HZHV(f0tyw+V50XtiSP$#p?BJ(e7<-5LPm0go^M#DgAT0EmY?!T{F7@dM|hRPyR@IRys$;}3$_T&gZAd#HE5hw}05=4nD>jp&FR z-H88v)xptzm`{#j;2rNbaPAFTsBB^I8M`=^b9Zn#1A~e01%IRgaObk zdFvT`U#325qvHdpUb+*nFrHMwWf1lol-y3O;}5Bjx%#5URaAfru}!{aEPV7kj1!k~ ztodO=#T(f~jz30@Vf+!?!|?L7D@qv>Z>Z=B^4 z;zz*oZ7{1VVhQs&E;_@FxMP%XHBF8wJEe`XtL4*|JWkuiXYsh0lAiUd^sRQ&6{Vfn z0ACHiCUvMyXWQf`RYQ@GtO|}6Tv9CK-!k}T^J)AG;xJ5($q!|yF@z<^ zjdUv+&1MFG;5Ms67yx3XM;LH4OWHq@O&I@~-}qPXxUyfwG0@*}rfpd1%V~R;&}>?` zwdHY=cJX|)zAl+$xoHc!0iG7{d!p$QaIcQ`DgW72C>BS{Mjjv0(Bj-IPnrSHI@==* z0MY9a27s935e9&m>k$Tk=<^5zK+N+913>h9gaIJR9$~=syqest0%q;Ei(lgt&rzs! zdNXh7DaM;@@K@^Y<+QVm@nr2Uai+mA+wyOMue|}3^K}U(yNF{hP;D>gLtg(PY#2wD zBj#>$$*u(BjUk)7bB#aKTe>)acFR#qxprV0xxXXcZp7ncGmTfcAUL0=5Jb4{84kO> zPE_y-si3vJJLpr5rU%jWB^^G4`0%`gE@H>Ch?uqyjotc-2I6!p6&IDP6qei>SP$C+ zwFu{o2G*ryWNj#l26lIDo>D81t10kN1K^`-=cCHzqbla3YU88IYPF^LxU3@>K&3A5 z2m{pad!Z_f=kn{?Jv3|l8sLkZzn4xhA3q%!y;@7p9u4jDS(>;3^B_uY0k(0WY7rx* z;%a_ST-PV+#C7imF)yUOM42YyoO@Vk9fXUZ7U4@hod!VofJYbrVwp!6aCkVj3kWw# z#sAddHAd|rqIAna95 zI;$s7CGxQU6OqxtiD~aFCU;Out~Ed3Avy^dxq*dVd0dS)TrjSt8a9?O+O*mqzG`)8 zOaD!ULZwY7SlL(esoFwJHFbN*^VSo_JjeYF})-arjXZaO@ag}6AM_V!HQ zOaybyWhkDij?~j6*qy$rBqny=qPR+y$zBEZ6%hx9dN64 z0OCk)v7E0v#~&uu^c?>!S`oLO}dKSsnqo|6(vr`yC#}!On zY^AK6J|6rij!v8>A9Si?q9cd^uR%5mJJqpmtx{fD3rlww0f8Ft_rphSU zta;D~$t0hkE7%0;3R8vr+VU{ok2EsJrX>^-jrBd{m(ApkAiiM1e@l4l2BvHoUpDXQ4I9)DC& zEs?fj@(7nQaCjB4nW`(G*MZyzdahOf9orLHOYvthgxHlE`yLX7{HlCz>=A$p`5!}K zC|RBeGlqBpesqbNq@onqkM;Gn+$qCU;MQ_%jpu^_>La^(K4jvPNtzB;4l{ke*m>*u zu0J}t%L2ly&7{pFK2h`p)=u=ka3A&2te3SuHv_1Kbsk{=eKf2009~7oU#RTc@($zE zz;v)&d_EJTt}4s3jnAA+C;^Ap?IBg1XEEE>Q}B$x3{%?)+{e>n00i#q5e9V9cRnd} z(swqPC()OH6n*mSq)!Pr{515Pg=fsGOC9v_=7ek520-6_9$^58{XN0}cqw@+3bDbf zZ7yh#YI)V-_{StHBUrWBy*x(Zm=nd9;9H4*h946*OJEHBTzeK9D#e;N%v2%(lv!oz zt}YJa3(aRPI0t*r4P8D}XR>;(Odie6Rd?0e&*lY=@3$9SmSKDm$*@wyW`K_M^DDmR z)_S@tY-7E9D5%8c35#2~BAhoa7VuHQ(}yBdhK@A+TzN?D?t!tei;S7HIYQo&PRsmLu} z9qc(_0IYe2M;HL&nI2(48?Rnt?dnR1;&Lvl5G3C5zr_`%B80JVL$DblzHwxup{0c(n+GiaIsjsCxeWmzc6hZI94Z96byp1fK2%dA_ z4mI|s$jWRT<#`|VtLX9CiL_nY7+3NwRzJ(&(ZsZo%G@)*a>Y>~P-4$!SkY6wF#jPk`wrv@|xLXm@FA?5WKTQKi_Pj|yC0 zgRbhHa&F;FZc%McBsjja*=DL`!#FzIhxg)OeJNY*r=X2~npNJYZLE07y& zu3XMP)8U`$0=Pc=2ICXb*G2Ayz&_pMLQgT$qhY%D#c5bV0n40}R~$G{vX|cCOBh7r z&rsKuyBQ$WC;6x+x^c4A-_qriI##PQvoUn@u>o|zqddX@5J!820hC{B2=U0t>)!+S zSVM&IEdYLz6~;H?YHw+_pnNw-Ehy#Lwvb>!sZ<k$TkIL;#s0P$>(Fu>Lwza`J>ZR~k3dG2I>&_?w? z&JXV=er>PTw1AzX_GzID!@*(vL1V**`0bb*4DUq52l&|`gRv`Wpu{5I!rw*fSXGFM z@kfcxDOc2pX@05aXPZNToquU2(}P7F8MaL^s^idXTD(#1atAyul(2_d{4tVte8_(*>_phvnUUHouIDJJi9N5EkHy#&lb0Pe*ldZ6^XS1U; zD^pdFR_5v`{sd)8r@w{fQ2WzbU;D=!pfUa=AxaZ>K@bO69O47i=gbKj&z!~X>@Lb1 z-wi6=d=1B6z>$1Wn6~NkxxW4lpg}y(BMbm>yhj*dH0b5S^vn?(s-hyd3{l_Zn^(-q zEyHK)=9L^ip5=;)WYKtr94oRn;N4l}=ZIEc62_labXEuYhVf_k-Ml`&lTQ^Y6)3XH zPwfHXFMvj=f}CVKOtSqq!H9ah!q6e)i0x1!C0z=@x1`? zmsO`~8{GjC<>1W<6W@o=TFyB!Z+IA^<>0{V7f?r7J9|-A`t6=zSMQ7ruCWkn2tkC+ zn;z;J9N44jn41|Kh+D4g;J~t$D>pbWzvariY+NF93xi8rUPYhwTnLYnBUy9i3!Ku( z`k)yrEcTY-`zT2jW4e5(U-S{y(Mybf&3=)IA6A*u^Wn%`t@B|^x7oficyt#vJHDY= zQDI|0QjEVx5~?D3SQQxnVxtguP-g;=>w^;p#@wY+R#DcD7tQZJBm0NetN;I75 z>#nXS)X+NpJ`x2Q{NB`{hBv^kLgYE|u9_nA{M7P=u}39#V6e6FxN)|pfCOk~5sRbE z@)eE{n$}KbgluS-X#9gVgBbeC!Fh zRnmrHL>!pSp?Ne=Pmc@0?j`K3so1YUMT$*zEtP^enPUBMAlR=@i~U9m>rX}qtB$p7 z>-9GTo1cHyvY$s7%`}QC*4ag=ZwbbuY4~i#_Ix(S&iU+z^>tzVOSPZ7;GU$bsEy_A zeMdHV!o|PBSIvKu7^o4-0FBQ}q2osCC=>rqY}6XZl6tRGNXW;(Rn+}>oml?c*1Bfw z>i1USzKytz%LdVgvu7K+Oy#jOJU^2>0DqDP`Qg~@A;Ayx(-qE|5q}fFxJ;ukL4lCp znhyExCNe!`Cg69#@!0$6D+ZfWZhuTh4y9udjq#KxH%6hR$UidipT$IfwC4Ij6dXsMH(5WA|6)uYJC(Ry`LV~; zl>_U_@e=i1o}6e*XuP^hwWggj*GOD|!sq}a5ITE`n;)B02e&d!(}s*%--gVw^EPB@ zM6xYme9?Kb5t(M|o2%v~6%L)mwn0%O89^zh#N$Y3&!(S*{Q4g%FG<~{@_ZNmrURoI zl>GcGOFZ{3TxZ>=H#G-$s^PRJSA$Tp`!hpwLuE5<2MF<12Y7)(s{Kt&+pSw5lxAU1o10jiG%^T1#BdF>&2>5E0@98h6Ao8S0BPAi&+V00+G!}iQ({vtYg zHl?6X#}5+}Dq>}wD#6ryIMx!rp2>Gl&WXAwXEt81{(B`?J#k4hlMz#!I{x*|FP&IN@PL3a;uEKZ$jxa9sYb9#0 zx^sOx29WT19$~=o6AA9YdiPNLG@=h~mD5zL&j)BzE_TkAK3k?uzgT{QGCUFQW`yiw zzXP5eDoP>pZ6l+`VkVQ|D8}Lk_LYLtZ5kpra~M_PC3p(uPIS6chp{Oa&xY5{gV6R; zHbk{LwgHrK)FTY=4RjcixB%X+0B1EYeu08RkJ=xyY$wki6E=*iR+`;?XDwb>RCzLz#L zU);?6#Xe~R$mIdD{RQ2`Sg z@mUJU<&pR_fT$3k%ZCQBkyt@#Ym7C$G73$rMVKtF+WVv8| zSjfibP>xJ_{p>L0UbB^dcBto{4VQPx7!fOqG+Xgy3Y6dG_0wd~~1i_-4K&@KeIn?{N1p%gCzT&3104-9%`3>SRYV zgQHJ!@^i_iw03!?c#Oe2Ri5o{CQmChP5EC3KT*GW;2(a@bGAXT;Qs;hS-_1DMPxRx zcL^?@>23LUMU8I~BwZ?|8zK(awAPrEu-dOPuy=o&))|{2;t7&zzm1!&AJ*aZGrUr# zldHAUP6_`nwEyw{HSI@3V3Q9il}%hrE3u-2{Jd3=cV?1b;HoWi-|}!dYAn1kINv!< zY~(Is!Y-TZQOF41rS?-hCTsJ7RzjSp%#%KCp;}6QNphwoi=dI^IWn74eup+?Qpep? zTad{Pt5GKx({gC4tp z73sxrzom>CHA+)(0Sh*3CBG*4P#CX=fKqxR{JzQFybe`naDa&A`$eS10hVj8!@)jh znR)MkiA=MaPHZCgf~RQB=xxp5J<#fi3gcrH$ga=J2!k$7cUL!Z0Hqt#JrggbXBF+% zvzauhA5gT5(d~^++NEwew_9gHTs)Z4UItRuCFuHF-O*O-2DIwTm0?lv!Yf>#(|YMp z@V7zl=x^WzTmPEfDATcUJzv<~Gw~8ph`IjX;>~jxWcNFuYIkElc*$YHXSwRqJQe<$ z=H_fr)TJ2yoZ{#22|w7lh2Z_k9}NB|a5;rP3p_uC9|B&G!ao6Cn8JT-g9}@N^OvUh ze&9tZTmxR5!cw?elESOO^CFPT_z*ct=Gdx&js8*e^iTW%fxwR3u2jzGpTH!47P_3G zck4vYPtnUe(F;=aU?+NEiXQ4jFHO-;>qIX~(Qzkwaf;r(6TKuwS31!H#S~wif-j}` zS_gisM)!fD*Kj=v7D>bPO#9AnoNwO+jVtWS^C@cS+;x_FdZeiM~$0 z{};HpRV}=7b2$1Uy3zPGIMV%t^pZ;PR(eOeg1c4$S+BfCUoC#A-CVm-nojesk2yEK0?+YRgTs!yyxPw*Sboc=Ii|b5QViA} z)zK?tvsxBv~(Z5naRs#RSr)zT0T#W}!Y_#YuH2xPh_}hok&G9RlX4(z5 zyJPIh0DI-8U*hc09jluv3So`k;BBxbCmyxr9%E4)CD1iEZ!wj<_|XhCQ`KEY$v6)_M8=z7C0KPNLsnd z8%Zh;QFC*K91~KVDcLozYJ(cGARNpa7M zee{qwr-wD^tkIbNLFIX#@@xwc*`w0&?ee=m#BaZ5Y?pbLy>#_5{KMoKDn8rIrdqpW zdgtq`^oe&-OV%e00P${*Fu>aG%PGT$C<6xTNgHY4NBD5JHwzvWu3#Dem^3oIxnuca z7d`$MLFxtfu5&dH8$SUeojK^zUxI!8c4C+65P^GdhN05VQn0ulf3ht+&QGt#ob<-oHZ1=J5am8#nO~Fx@LV4a#hb8h^xP7;v!k;c^~=m7Ox{Y*Z2z? zqDtc=cw31k(4cx!fF86VDvb*jAdQ4*NCo2JmKD>j{lnmsE*tXMGEFj9DuKo}m(O&B zyxs!5#RZs-kXtOk`&@t*Pm{$*Ex?^Fz$McJ_@V{)s(zd0|EA#{)o+DU6jeEb5b-Uh zJRi0(Pz`{W*nE4i%4T!!nBeN#RKAmABr#)@vdh|%5nP?}WJ$W1nz#_MT6M;<%9z!T znQzt9j#*&!(vDd;q4Kw57EP$Y?U=1 ztyb7zd4Y=uB5orX4@A6IpER=Wnah0~*7cN#7Y~0~DVtp3`jijh=-W7^8vl?Ym&ZS& zk0ZlQf*L=e8lpsYL?XM?Zad6)2NRzumB!x?3GOwn-wTZ2Ev=N0U$o+5e9&`!y^pfr0(M&rf5hArGx!XJlRVq zd42N9UP8(1Q&091%J=2xP+!iz>Zif#$Wdotb#zjd_D=1qil%8jr?aoBl%Jg6om27? z!P6#L=LAb6PwP2deoC35kE!t`uh-!#)^_EHk~hdjzkOT{R?Cea3IOqhNBqno#?)l3 zb`6*&%GhUp2m`3h&v}FaS7W||wCc<&59y1thJ*Ucc4L`q=ft_&$1y`4>rkyO*2B+u8eBPW_72Zr^9#}eo&X;?iad0 z-?&0?ujQw2;)9BuBXYj6fY$`jUJ#84NKPhdl}izFXH26kJ_;p}eB%b*tm1hL{Z^j)drIN#lgkosCV z?;(hlGn2fC)Z?R}#7UlO$A__=n5zw^Ecvz%YAnGvnB>zoOvcBE{-j9G)n!vdw}(^e zVLlW8iF60K3dgGRMYz>zSoc8N&$8xZOnEJB_!j<4>3ksh*h_#vYV+))l&<#T)Sl`I z3_8qdQ|zfq5-l}uv&Y8~!^&*bP(fXj&l=kZa)yGaRN00YSFj>yt!yNV^srRF33*u1 zuIjC^$nEiG2B$Z?Jj}iEptTp4Ohn&qZqT3;;3`F~=j}-*)*@YFWc`o{?jyaAQLg^d z8r=p7mvqC!uDtZ&5H>%Yr}=7eT|XnAd<#cfxzQAD|9tWtJnIE#^r5~c!+KcXT#RQ-v9v zj$Hd>8s~%a`N?=i8uZdOwCpd4^1D>^%@M;D+cns=97|wTP$OOAN@Ch*=Ts>>BD(R! zg)@R}RMe1aYK+w3F$_qO!uG{qCAV5R(|8~0v18DIdy>(f#`teMPjj?^qM1@?$r}Z% zIyD|RN@;}Z6IVj%$Kf$YD|SKqQUF~@O)#X6a^MNMWIGv4evBb?-x(Y?_W}84@jxc& z5m;BJ=^<%l@CFZvE{YMs!`D=nr0SiR-r7-@gL-q)WT(!}%a6mq%y9oUIz% z8=r*{P61WDORBhTwEZU}ZPnb=n0aa1R~q|2jj(^0hX%~2jw;SIYKm%5E2@SdO_^WN zSL-eVpieTYgZQG8N8kOM`fd%Kq<^a0=K4pLaiE}CjV|E;dw@N+p}Zks_g5OKr2b9$ zpUS&GcqPKDp#X>V$)HrQXu6c(zAGL-Q(_X6( zVdm5~zL|dHjY}fDV;uBO%m9wv15s*rv(y`6mWZX=Je22i?tptXSYEzVAj0(GYP$+6 znaI)PslRl29p_1X{9b}%+>T$rem|6YZm!?i$2>`1ldj(tr)~Y73zk>h`d$0CkGiaa zi60?-kT_)GhbGitDY*mNmD1o=`7~}<`UUZJox0u7#E(0}kF>(er*U^PeEo!>iJx=^ zUeyXLpT;Atz?GqipLPb`vlUoAt-!qLoeTDb7}-k;&0bo102F_X?$TyEZAM?$DMg20y9%#=cAlt@-Crf%R~H1#qtF zQtu!10gNkvR6Esn!%-f*%8lPARC80AI@v?chOx~qWP3pry@OAYPrp+IM>AV-lkd{* zut-t8xKP|~CtP!gX}5Jx<%nq>+3J>T(hrc7<;quAVi$hCz(Uwtz@qhB#VGdjKAYUx z-s1W>GDX}Ax|Yq)Eluu4gr~v4`aM{x;FVUKCY~>r*Y^|)*Pb=$sWFP!A!Oh3q+fw0>@=D&&?h_uyiCf8xMcO zU>mVMZS}d3a0ByKY3ZK`UM7*Vb1uTEs_w7uZ7EGTKecD)-1+H1ck2K(!<#8ok~>4) zy^Owsl3hGpa=^frRT&jAOcsMKugVq&iWC@&_R`P0h0O01U9JFeAM9cjfx1kxgz)I` z?3YiL0`;%lE1wJi^i<~;lVt$OF8svvh*8hw7OXE#_7xq2AD=9>&Pp@Mt^{MXwqGIH z4Ty9K$#Q_XnQ9-EJJ^;8uhveM!C5u^xYM8rZ_wLXvKA~q*3Cs>uqD{#dRHgnu{!W) zC`*(Kk>>p2nga&P!@D}jHExYyYSD0QhPCodDsE&2ktvXVH1yTR&5t{ymRgE>8u2hi zFfe<4sk$(?kYA2_EjN$N6_e+2hH@jKula+(Q}6Kd^cW|YrI|!ZdXRr z`cSTA`?J0v*LZi+r#siU-8*E!X}a;$qy#al;P* zjXyjW`j^lQG?RUWfHo5w0OG42VE~A)d4vJ*NOSAI_+syYy4N19wjZ{d)Nxm5lGAJ= zwRf5@U#eHz9Ik)63%iQb=u-&OIE&4gv5_q<``@LCKZ|)>o{seDUb*^6COI=rQO{0Z zM~B_AyL-2}ltH+;70)X6%xrV%qNTK)lG4VCK{WCtM^oL2mDXUq&w_bRc=dj(o@_?zl;hZAz7lMDZYLJIV4w z+ekN88N`U2`BsMG-D!?Vg`dho^JoU7ioWiv$N&)E@CXB}&O#OkL16FSG5V||X<1+L z>yl+t{CEJa*3E|4&hG3HRcC5GF=v@X*apf%{{Y_-7kzvtxUR4zUMZ#Jth!fGwqFg+L8VXcR#HqZS-R>6N(I$cH# z&lEnS!Wo;aOsILgi%%);6C@DVDB$?R1hko=;O-FSb*P}UAlmIao*q2!Iycrofni*N zr^ol|AZsVdZLSAL2GYJ^x*Js+hkYfQQv!(;w>DlQ!qsD)?U?SwEu{(@XGa^Z)scd@Jj2%WPdYL^&Dcgb~r$y!W zJe3AO_9Gr)0Eq86N%%D%V@i5JEgY#ZFQ&}tK`s5~<;d3Q9Um=hAdIon46}FB_kxi0yTj3F_3@=dGWdjAtp+Rh=K@IiFYM z<>Fy#*Xm7bnoJf}Z$F>|md8a^s)eEKTXds_<{FX#?Bv7*+sSdK$98fl1*%bYz{jSIH+L<1-{KSIz9F<7CKUV;v{vYDgw7(@s%l_7na9ImC0RH{hBMfNgOV;j9 zo4$wc)m%v8sCP4yoe$(xJ~A|#^Kf;je6;!jVk5>L6603N>ZE?*lQIBK|I#B20P!o2FaX4_J;DI-F%w9Fb+@%m*VTRxeQgqes!}eaV9Hh%0n7{oVMP`6V)ZTp6Wb!Y2Ms3 zaNf2%%8&dEgEd5}?UKu{cnhj&b3p(AZb)X1OnqcuylW9EvJKdU5PV zqOoVp1V|x*FT%@=6kSWB4?rI3wwz9tIA+?5NMW*?-(+uo;(MWV;x}IO@oRt`xwR5~ ztWoM)<)ej8HCczdr+P#&*#}^*mf~+AVKPy|8`gJ8*A(p%a?oQw+m@|O^@;^lUs8~HXh2d$%V z0eW4+9&IeOKic?r1+n&r(u3Ozy0OpoT|XIZ$_!wvvV_RC-yVCc9i7Sg&Yb*+(l$n) zLDi2bIlZ#*b|^sE?03BX?TkMxY8V^gmBsKv)f6QIhoV-G0JyFisvm~4Q4iH{Z_ygq1C%-i4BHs^^T?d z+m)cCE7JdJ8~!{CwFFZbKl-T8`}J3dT{qTXWv+~*tFR9#wW;f`$F){g*_(38fdfZo zh66|KQ5-lr95`^p`UflFz^Ou=3yNoAPIaiGh1v+}z;NJbhdNKFOF^9)4xDGG_NnC` zp5q44l>X@v28f0iK?|22m@_{Ht>|APtI)Ab!K4;W*0Ylp74q$sE2LFK#GWu$j6Vgy zgO1tadOD4o6K~a~4a7fL>)A&6!(a({JGuEsh>0TC$}l3)72K0Uw9$`=0dJQe3ic!H zJ1UzC-UdWe7}L?9TG!8BpaR z{-YG(Xg9!U&zMf@eU_KoM1KovC26R#Jd)HQHkkwx1zPX-@k6FMj%H5=?ZfGY8+AP; zkrLf%fa23y^1NSpjVT4&iZ;`&Elf{hQWO4lUWsR_yGbWHv^7QOtK31=DRq1A{5ZOi z2E5d9Z2TyWS|Q^AWFs3x9uZ1raLj{FtR43tAk=%MqU8u^X|26kyt}vQvCCF*Cq>DJ z*e>%9fE3@-qB;$a8|el0tgXkJW!1a(?E@LdqK?%Dzlt+IViA)#^j*>^vT$WMU68yQI4r^4*Oxc@>e?}mwb1MJTbx4$QfCn^;aqWdi z&&8G10P9F?(%YE!7;f9_mn*Dy z0k8&To`nsie8k%2NQJhmaLphqy7Mj(Ll<)Eb?s2Ar;$&losPx$vE!n%HISioO@kMT95W;{|2&G>vg-{&}yW@_StKNl?ZCe<4QKIPPM(z z+P>yJu7DE$7qpY=jIh*LF^<}Pd?>Y)i}z>pU=1H}auNhzg-?w$@D0s3j1R!KG`VSL zbR7$H?&8|>R^z|b>EvrI7(KZfzem&KfdtL($nB$*{6WC+{djd3`r>EcsLg6T+zekR zP4+ZqO(+*d-?32Qy|fQ^1;xH#6K7+ltNdc{Us2ypo=GB+{krQqc3Ac{uq~y-@Zm;74`YJBm`tmT2|9N@pTY8L@Wp1SQdsXc zU~cBI^>~D)-NE(-S(>w{P%Af{PtkHQa+<0STDPD_ka9n>$&q~POBxS~1BsBi_^`IX z8lCgWQ6fWj8T`vGOByF#F2nNj=#20UxKtRO0|lHlEY{#XzwsBs7CM8yn_!JsYz@vY zCW8cWo(`roSL3VW)y5Nq@Q25_n`0dw_h#EJB&21UJW1!TjZ0qg{F_L3|`&T~Gxma1}(NA1YDyjFec=uGx#pF1E zxje4^Y$19%;oS@76zfk+mI^hrw>A>x(Pmo?gWZCW=ed2O`qvN0A5+%7qx;fB(AOOQ zJ-vu45r5F9jr8%~2{ESM@*YdMSfWz&ujp|>`s3%2`A}|5(b&U_{&tGf;CmEZh@Q!F zbA6-FCCd08iQvNL#snwN1G|%q`}fG_$|)fV%k_+>t6%R)d6VN6&m|#-VDzt5dW`>x@$p4 zYhR(?WCJlvS*LMTFZA0Xcs0*EFT+I8fv#fIqkMIa3>a#+5wF0gc?039ycjtR!sm7vZkvK`6&$Aw|;S7F{bhhZq0? zT^xrn0K{yMFn|q|%S2NrrazTxwBC|)8QV)YPDb%A=+a&;jE4y27WoJ1?MZV(qR<%X zT)^1F)@@`qYk#3^sZriA(isrhVyX)@ST78P{juJ~;^9cIp_Hx9c7^uU$D<^(F()t` zI)nUaW+wiv$eF|_3Ff~n&cl9OOv zW1){!?<+iTBF1){Ev5HDejN)T?z~RALY%BhZ)z^|9A$m^kF*gM6>N4NL=|2-8sgtN z{E;WIrui6odHR%ZiPhX!NtP?3x!BV0Wj*qIh~U&em+YzP);^9Er45z~6}sxi%qZAO zx(~yL{!*VV=bsoBl1)VI$*@~E1)w&c_u%sN+~}z|P~usgFD9n}R_nQXTS)(?`#okbx=UqJM6 z^t95Uomm=PEt7pl!Ly)Me_4bsW2kI#j3sprPWMkI7Hxb?5u@Y`x!74dCwdyVdArXd zp!kTP8W7CzY6oMaXZt+!uMamPy@)V&ui`RAbm-(PkVax({Bkkvb8ul)*Yd!?n#!GG3$D1SD?WmLLhN%1U;m`rr?9L{&8E-@+`QWt9I?smQ@Glq z#FF!fpnERnNZK9e%fY3W7O&YwIG5u><&ZSm1%%wTg50LT_@ou4m0CltKiXE(7O_)Yf{nfJId>Q`yc7hJ0OLXqqpvvB>$1?$08Ox{Qy4lx?SmLD=bdryCeZ zZ(Lbn+>6h`6Gtcbj9)Gk)|R*O)tDjsKDYBl0E%2nzU_7r48c1S$xHC4?Hi6MT2Eo@ z3O>bEbK{rt%@oG2HNUk=RD?yFH?XwFo=bUn8IQ_aB92@i@o)Q|c$NZj@5y`z zN^y8&FsRJ2>o5|^V~+FJoeJy`Lb&S=6U1nS^#6AM#|pI%6^Y~H6FG7i*?Ys z6?+#zzXnY5T7KG!P)M!=vEiI2(Y0syf}Y7;db5zyo9!aU*AcG%GDZm=Ok3R?C2S^L zuzwe17LwN!WNx8ao>Pe5Ah75%>MbVM;~WD0MkVq%i4=D9uW2UIMo(IuzQi{W-oMFq zZE$(djG1tkdK#Xw{MimxoBJU+4qDPSC;6kASbZjo>$POk-}Tt%2{G9h8IiI_UjU_9pzH!&8#Z8*tJ8_Z@JYJRVUUQd$Y|1 za@N9oGi_~pvfQL}a$&o&5}P)4hnJ`n<%*uAZrTo5wk+t9Try;3aOu6S&2Dy`HLA^y zlB=08`&Y_-!3G;-Bnvy9_}>+uY_gA%ZG>Tsz494hZURwfX7o*DHok-b0~2Fa6jHW} z72%jL>|b>egwLCm^5`=eH~Cy!YyDFLBsb!1iV-OhBX>Ib zLz91gU-WYgEUm2i>xytBGgt+wCVSIw< zr|C6oPbG`n~mwqzTkMJmz&tdT!tL1_YQ?&dGvUi0~S6M zZfY9K(lqpKrLn6^Lr9lKzfVJ`9B1BEU4!+x%yz0^?IhWIsLCp_Do3;L)FQoIc$;;RmDZ-(+EB)9{lEhDT`F+>SjRU~YfIGeaP(#}Oy0qd zDP0?XJHwTY*PY?~xk+hiT~UdWfu8{WG59Zg6&u+rjJ}*wT$<4{qG!r^3;D4oHsV(D z(iudeBc9&aiZX*T_m{tA6N#nQt$xyR-6~zz)q-V5HpdOC*{=9Ox|iJmtAwM^)5?G$ zCG~npUbl+Bsn^LV1#I}OSy`h_&xA6;>0%&%X`qe&frs1n)ok$2|BjKJf%~n^9z$M} zYO{_lj2YJdS^v7mc(gbcZ@^SyN}gQ zXAjG5k&>J?zF0%u6fsMjy-0F|z8H`7tt=@Mnf>s)-8(z0+*mVduR&KR1l$L&*O03!Oy#UarF?+v^B^tRr?-EUu%pVah4D3y~1~p_+>DR5l*^g@+lkJQjye~bM=`V zQ{G3Q%;^36R&trqujs2jk6bQz0=lBnuYw}P*Z6cHsO-&$MJMo5$!(vM8TnN%n@_%u z+c-4Hx$h<%#+&ZkOt>UJ+mEX&$KT)w>6bHP_y7*S8y|fT$M{3?CV$C@M*03s?S5+D zD0!G*QaSo2Uv$&>9sM>x799;Wz^>{p49(vKqMa*MhQjZ;&m(-2?+cz0Kgy^6ZFX-n zuxdb4@dw(j{#FOWr#m?jN;}FkN*?1E0!3d9`a-Qs$5f7Xxj=tBslb>><3CMUa?6nIw<%({%i>-J$Z@fc9VJ|0BXbW&TP>YvZRX2dh7Ej*oF}r)e&) zyE5qZ zFNzQ+CO^fif8|L#tDA0gT^X}_s*8)s69nbeSq`zRfn;1URduN*?4#V!Y}&AGiCEN5 z-QCJP0!~6pIN{@h;IPwLe5iwCnYr^elKhN(y4$%Sk$pOT6a(K*#MA$r*3bW|v|9Z8 z1>q4^x>l!NvrT>AKVU|GsaVjcwj-S_G$ttDufVbstvimlpSHRtKG-v^AVu0^>m*d7 z!nCY&gN4oZ69sPsZ++j=t4R^Mpb@MM(XSEG3 znAfXE(D2{bn`RgP0}5z~oB8K0rxNj2{b+&xKDQRo9GAEA{9h@r_?@i!Y)82TJ<|}2 zN{sxsfUBQ~{+*d-t7gq+TTfKmH@$>AKP)!Bsv=w?xzJ#LbaVVc4%c~WrP#>46pP1A z{9rkg`gP;C2Y&JGghaa>lQB_pA~2^pg?xNHS5SGGis?Pa`6U-irAS!so|D}%PX*}B z%EHVI1TsrX@24#Fg)tL8x9aC)ok1^R09r8_GwgdsxMdSecI7*z37wikZa=5K!dTmz z*)m9JIP=;q7rz@0FoV65Mq+B(_LeCc+qj*bP`jR+iSHCsiLdqG8GL^&o|*xE(%HaP zfC#BbJhl2iLr<9s?XJ*v-;xH3#)PuFp#?-AwPO(fU=!Q+TzY41*`4_ySg|(Vl@mnnC#Rvadci8T2>sJW zC}h)+k`N_-Qn&d3NIMfaxvDDvzr0uVs=9h1oph=@Yj=QdUb?C}Nhd%EkOUAx5J&(q zVHcDoEDx&)3Pm>!s3^N2s9_N!xQilg;|eN{IxcaUaiw+KaL{od7e?d%`#bl&s_O29 zapvEjPuIKm+(^Z z4Zgn_tdO4QTVl}?8fZN6e0Nc{-+;UJW+Kbh=Nw{&b^W%FpGa#-VO_+#E3LDl5!|Rz z@XKf&pFK6lH#Kuq2nr}WQpkAs)Tj@n0fQ3?G1|0wRfWPezmHZN9`@@iwISQ(dF@$C=36!sz276Qcw0sk6NOpzXKnCutlue^Tcy&kbXr zZ@XX4<)X(((w;MuDn_h32i2L*EL)dFp5%f0QUO*TZoy^_dWDK^{`j@%?@9=)!1zvi zhA5DH2w8X+7=_u?%Fz?_?#5m@!IvmM`t?=Hi@Rdxh`La`R?dPB!#6AGm^>^qtMy4j zETh2bI%|9!2VqO0of)*QMvx?0)bj#~l@_pS7+V?0f|6?P_3Nr!Mb$SnHAmR;Fj~Y^ zjss1wp6H{hUixWZvaahi1`sNJ7-+is7)r~OhPJ9>U2e%uWz|np$$3F=+VBjE{iV2r$}4IW=pPrWEGNwuy1sU-)p94 zJI4P+GJ7;=q>wkyDk8F*`=q5Qny$eyL8a5LzV3Y4(chv0RUAIvy)-n^=8yjw40b*M zU7BC6<@dEk@|D4_TS*?Y_rB^5`Vbwmf5UOSnkIn zL*YK`s*2S6CPYm1SDdxK@iQSpm?G;3=&N&BbEqtV-4*(S%2Gd&&;lbZh#rK9%m0P( z)!|<)D68&wG!uroRX=cR*zVIk^la%y{Q(}4^P+!NGoR@tJE%HJ^WX=)EY+j8&u8I?z5)h-KJLno;0Sr+d~;)q z=)1H5fvwED%IEe3i@m+qJKj+HnoXysdxF4h8~kz4^yoY}16u42=ZyxJRS;(Z?rGmN za$t(z_f|l|pTHmJ{#LwE-M!R>{WTnnz3596D-ohUJw=G__Pp)hg25D5=$!^G%>#jH z*)j{b=_2Z)!&JJe&#<6#hV)6AcM?Mx-9Rx>4hQvRGAVad&wB;RxK4+5vRHi#UkfXD zDNLCRrzl_jJ?A-I(eb{a*){p|v(!->s)lmK&L@$Bcs(7p9R9&foYx1Nh5B%52rA+N z?v6b7H+SNzwd0FB_?ZgnoB`=-h3utNvlGZyg{NDPIfC@YbNM8Vl#hGx^ma}jrbF*) z_{tefs@^cb2wqS0kg5nX>Ukze*U-foPeUhXqmg&VN4*0F>00VbKmTpBecn&$#Zy*a zOHM&NkIaL($ge3&2SuYTm{Ry&#hC)>n*o{M3bDd3NFdF^FBBwR#P8&2A*}wXwWvl2 zhMFBM?%{@3h36J~Ii7dTHQuPoCOe6`gZ3BN-EED6ZC?ToAX?gXrsYgV{Vue?P+$4L1AgECO>kwlX&WVc-@QZ8C!DSD}4@EjH!Ze)T&|pGm%} zdzjfp;_x4X3X-OOQ}-(x?X00skb8sdVSn4Hl)u~&Avk4o0)qpELB!#(HX-6c=0X2| zt6rlwYJQRaUjLj`nO<8ClQQZq>|ZU;|C|>X+SD@CJM8GTZOUG@NSt2JH1f74bG|>g zEB8wcMkF}l*jkm1Wy*bvb|rjxE&6d6h`+QeKEt05qW@I6m!{7GaKf;ZYIbIV0yCNv z4bX&4oM)44_zvG-ZkLp~wYV#Qg|Z-P7p}Xp))$JyBekD{cj6$?puQn~<$2cc4h1w= zna7cG{ScfHCrNrZLSTD=mzB#f408KZ2xe5LtWW7(;Xgw^rWae=z~n|pg6HoIn#!xk4~C$) zU%H^IAN8f$qWp=p&S~x6J~@vP7GKW6qLb1lP2_Y)SVQzW!@?1_=8Dz>Q(FH48iOJV z<#dLJXr1^Xh#%4z5A~*r5OeNVM5NV~?b(D;(Kpd#opadVsM^-7BTBBaB54JzpIPnA z4N)+%>MJHG+E#URWimX|wUqufG@Qh%5BpwbE?U|F7f9+69%o52^=&QyUIv)$4@Y)u zc0!NB1ln9kk(7jlyCe1eaFp{&j+pDK4*{4rGSHRXSXroJP4w!!x%8ccZ10W!LM@kG zlFe;~rQ`^u54 zb7>~iJZE&db?1wg4Z%j=UZTOA`RKpNo>Hjit^LrhzyBT7SkB`&zLD%kR^^P8xoyR{ zh0^@)w(bH!-32@Pd{9JoBlnwI=q_}(pf;|i}Mo7k}qH?>k(KG6aPj_Xp zBvw89y!5%5;S8qHxi^aWxV#-i zd()iZ7OaM>TpbiggRp|}p@CeykF_$oHg-+AgZ-WAuNeeu@8+bcWKxB`QwO|^=M5kN z^lD2O2NN0*%q5PWLuk@Hei#tR6HF>KKiUP2HqZwr6r%A8i(D8ch6$y_`%0Zp`=;uD zYOR}OzY*^XVZ8-j3GTcBP}P{QqE@Dq51TvJt$)aP28qk06AkGL>mTix0HPGIECCFs zfKmb|r+`WV7)b%k69D26hjeA?7)?S}rGV9PEQt0`;3jgyI?r<`uFVnX)QlgF$7YT( zf&G@yu_FKsKf~-QhhNvPwHxof?AxOV(o*7OAO!ezqKHA!6Qp&fXsro zgGL`B>F}N!Rm8fvH0#0Z+Mgec_oTv_xj1%(4@p>a0EHf$P{{basljhm@PQVrkZ6sn zNAvR(oV{tHB92|*JCx`kOQewTzNx|QRPb60R!DSk6X!80odXlN#uuas=i}HFzDEfU zv4jd4UpO`RVFe#*!3v4i32&-`%ivm%e{2Ikta^v(lNmc)AKHwM_5c0J^`*AvDBj@B zIs(>HK6Q&&S3E<*#VJK_NAiAHdyWvC=+}joTao;NRWWAPRewtK5*)k2M@95=i8(l- zknw@3!5>iYQ5LL_=xE{OB=32A<74EZEdqN(6&XG}lCAOmh0LjTvw!S)>W#rI@CdWU zj={~8I>)ce#W5_x`oa!P^&H|0#I*Kf>gHISMt8<^=h+Cb?h6r|6BmlEma`{}zQ_7C zax983%U$Z+cEbA;RJq%fWfE&u8wUEVpQjo;Np7FBw-S;uFdX{xTqO0cjCV0@p)$F9 z%YI#Ctvs9+262$wB~*R%?Jt~4ook^CSMC!Oof9k3px{<|d@Pj|t}KLor&)Qq-V}w* zO__PC^0bl4g5*l{WP%-yInbxf;lsLYS{Wu~khhkI~BA({h^R|62^1bvT> zmJ*|Hq|LtbO$_5;y$NiA!QLNjBzm-o9|?k@6PvyT!_i4ipED6)V{J2a5kOOPI&)~b zr}`r1)8@NS(f4TzI}RWQz@9F&8~a0y|WfQC+S` zO7BR^eTF;%XTd2)N0Fp5 z)Sb!n#HT6%ec*DhNIMN5@a`;6k#gzm2jmaR(}7kVbkdUx8`6{H9Q;Mz*^j6ETFzq! zRTHl3}3jXPR%xvcahdMZzzHX`b3R{b~)amfxiGED! z?CoZYWBaobcv9t{PZ7qn} zsA(JRjNIrzaPpwcaz43yd@iLM3i5^{UvH*Q=sKD&M@igE-;_~X(N|Yum;*1Z6-28* z!hD$tw=+yXM!w}j-k#0njci4NC)6sW1?UUefHa!_5#;J!TFzW9qBE=SX2RM>NqjBG zAQDV$`&ZX@dvnpjWPtso?#z@3R+gj;7)Fg>Od-n0GtGPsER|B5m8KZ2RpRWN!1=qg z(Gvu_lIPo8$umh{TeIj16*9Pb00_#_KbnHu3Mzn91!>bZ?*_gFwQ2kk=wsVcx+KhP z$I8GVLVHH-n^4o)wsV{`b~KugUqla$&(RF|Tc+2`#|Rl)MUw_Sy|-M22Pr#MR_JZp z75*!UYd_G>XZd+hp*0on+B&X8p*E!2ZwYqI69}rrPe?z%U3DL=5fS-ub)Z7&z#uvZ zf4gtT%H_GaUaP#0IbJSrwN{#!yS0+WrfV@zDYrxx<$F88tG}HR`dDdvyGE%|y^|$; z2JF(^z_@5VBiz8qRRsD~bQQ$6u{Y9EBlxmP#EfxffI zfM!McC>a4O9n2%l(M8l!g=^F+sW#KFMLz*%@9S!a^T9GWp^)e&nh<}=Pob0;d88>m z<-`L&1Du>$`(AseS43WAa!aIOUZ>hd=eD!Zkmcs=W^4EMpgfu@R`noo|D5sBsd;}x zd8;Q3PAH_=AAIo%MLCV0-~I&do-rQVgt0WTOk^&*egP;^_L>lGvT=Zs}AF zX5zypBhlKUK7{PPyS7!;=EoQDu_J=^Qh&~l2s-?H?F&%E(7c#Hp1@$dZK3BTnvUPG zmpNYPP$!qxx^WWu=+BQ{qQ3e(WM-6M=V589x|_Q!x5 z#qB$Tw6|D%bx0cvS=olRzuG0xIJonll+!yQvS(L#92wRwRk>md`_!|9p?=v&cl@+; zs2@6_!1?@XVGX**_fH#iHI7~3x7DD^d~iY`2?=BAxU&Nepf}~Yo|tkvKd_=N%Y2i zF@EsW=#$Op3bE*#*D~HqY016llfGkWtLHM3kp)LjG1$TYj{an7zjAc?9Ax#J3+!#} z^u(RpZv|Mv>KjQ0Cm8G)Tu}Xixff=33@&ofqnE-n)qX9d6P_i@M(aVTxn6hej;1fo zw)rG*eBWhizeStG zNXdLEAu|Cis4jku=ytTeR_=sW2)-(Z47E2pM&(~2cXYIzNL`Jj6XfYL_(^hh@;cgM zWEs7b0u&}MWw~-%SGyK0NgpOpD(`pC;NSe;i^mw!%gcBVt3zwlP) z@GifMwG!>7Bw*i3ayQIc*51af)`VdUiWJh&IovrVwXW5uP`^&gi{*3; zseSSizgoJHb-fQBPYBUaw0U7iPkaU0i#=v@sCC;Is!EdVfJ{h&RHZR~8R46H+b8?0 zM}VwVr?J7u*sUim;wrQL&NxHI^x{48W|M55+WaKy7gLP!%RyM~$m%@pO2f@=#FpXX zlJ)knbWV2#Js`-`{({`QeP<)Ut-!|5c4YJYJq>zuJ9?sX8EotaY>xmfn!~@rw`lcq z7Tqeb{+B)IHo*S)mTB#Nb#W^@xU%iw#GM@uch>2*^>2x)?OCVO71YuZxx zBKdf|syCD;kXjTbm$X;E1qQ#WiPp_K(dWR@(3ouYfkMGs!rd%iJn;v?(+8ep1ygI= z%YCdAvZ2Xv-zd<{M9cJ-`}gZVJzA*4fQ^)?vvg*gv3@AQcXQ%VbPLY@cqGQq!iVh> zg}CKsk#pOUGn=EFOuo75Y{Dc~(zClV8+TaWP7O+LZ#5{*zLC1^O0M%IV|jmX>zh&@ z5__)9sPh|TLa-%Xu|2mFIZ+F@SecXC30K9ZjUALNi|urP`uRMBl^_+M?>>o8VyLC#c)% zNjNjsg02T6PTFX5MD-#<*uPw-Zb@BL4rnZfHA0YbISgWLgapdPtD;>J@y;-MO>@Gdto}s>_D9 zqjh`GgTcE{ZQ^!QC_dz{nRqcJXR_NTbR~PlmF!i9)*_;L9a=0sq^JIRJa{m|$9#GN zu?k_6(~n;*DmpRx7QY6UCdMH*+xAyK1LAak^rc?nG)r8t*E&B|DqjB=X>o40yja9ZOm(Aj%O+-AB@SiMya||%&(QlcX;HrI)^j`Ko6~u$*Z96lu2^{T zEkp>MEuWi3Zn`Daymp@EwYKOKuxe6EG&v@Z4K{XjoO%n<+s02xaVETEXRy)a1TLI4 zVdKrsGPfm6V=oJX)1Gp#5U@dg9b4ewmML3c7bDmxZb8hh<5$*t>#y|swRS+b_vQ!F zJ#1hykAAg@vAy>2i{polNx??0SlB6?ir8Z(DrkhZ@GLV!{qYx0E3R}rj5VVB@H+f6 z;*64vSXX?zH%<+EwOgsJ2{AR%p;YIDmb%)@F-$ulrlQBHtoCP8Pl!3ME#vv42~}M(gi$uR9kz~51 z9xfVguRcv;ds8pH3$0V`pJEzxX|?Cpmc}*%n+}=fThOJFlt1n0@ZQW}gz={x@9~zZ z?a%Y07gLWYvqb0Wi|w~__-cDiy=Uzm$feZDPH`!=7p=aS45K?#Lpv`+knez3q(EsF zo(=|HCCNu;;K0h}okZSwQM#FRyv9Mbr>Q)I)_u1iABSTKsf^r?=szhql4=&-_%4!- zt)pJMsp?;-swE*AZfnvK-A$Bf2z~{E`1Qb%Q)ca6(%zzfH>Aqegh&<1Zy-T$gOcdi zLh?o-p%1A4v0!+pICR&x14Ld@Wml%5y)4LEOGftqkM8BClfm8=oe5rUi6V}<4_IS# zehs@8etZxuUcn}+2b1qZ$@i_v_if4d?fPElx13MC14#563fw#-`d>zP=WZ~Z*^)&Nzl#``Z=<(} z9<{cnS|@>!sSZBwVoV6pFrD%vx8F! zkb1km%wv~95C6NoKWLMx5DtXhRuz`Eve2)dupfM+fy`-aw2R+kw4{Ap+gQ|g zx{C!zL^%`oo{hUIq`b>`HrE40^C?C#G}lE^S;mz`N5euNx zC@F{BgD;h;gVT3VqV`=y0gSQKzQ6kWA@8!`uHsf5MnU60iAKI3)%R2wSSwp*OmI{P z4E(Cy5TX*8_M06)LQ8080;rC$-P+{WKSp|WbA4%NRikU)Hmd-Y1G9gX6T-@20T)1f zZ{g%=;b75^KCXh0(2bo`hb8~GPPtg-aB0Gb(S1s0+lM~y32x+oSJ zeI6)x$eLK1i8!FJM0utKWwLFhdYg`FWw}t0Ao>Eo!|(U4_EG_?wqt{p;!yQwcorVF zCyHCbKTd$gdxPTPwZ+=M5IpFQeMyM$e%X1yA}^hzs@a2YE%{!q?-iJ#whKS zX!H>ab?tXM^@EZpa!_eDxA|B)w+W;%{5EN)p)l^$1<4cvUpSX_x)5xvEWj>T486_j z*c1jEqpw0&wz%~LnT;xKvE($Bm-!u~-h6yL!t0@wNEbApb1;{7Nos{q_a2 zNBTfAtdrEn{~NHl-O1@0q2Alm{@jesQ5S=J4_$hcF5MIGz=mO>r=^{n6V*9Plex_< zB)5HsGrBYSG+jxCig=d^f?U53yu-*_e>2D|@8>}7mzQq0Y@gcT=``s_>Hz7Q_eOA` zLd!Y!7&9uHkG)|lc2bMn^!}PY^Txie&(+`Hch|h5=widfu%My^1>4ZyL#>8uI!Vf0 zd@ebRDFx@?D+uMH!hG~RA->>{PeB(%-z4fDLZMG{$N=BG@q-%5gF(w=X}0h}>*~@K z3cL-(MVlDgz&t!c?9w8{r~ihdU56+yfe1e5@v&Kyux}Ao(Oq{$t5<1ZK`c=Cexe7G z_m-`6a#i7eEx1uK?&e((#A}BAe5nW6153&Sedq*!09@~2M>slyT8cvEW&@7nE&Hr} z;;YD}oGs1`C)eef8_czu*hbIe(35GU2cj+Db^@@{(Im8YxZC=NyKl9(cf?B^y|C!s z<>Su1u76kU+YrG}{tlnvr+M9!Zy9|%YsMOwrUOx!ioN`OZ7cGY5zTe`qN*M{eIXaAk_J6K=*E0&b(~U-p$s*bk;d7 zm;G93I$!S3CHV45f1RFSSu;V>iJRQfmC4*?-!CRi6IRz3vQHi~!${S?z6d?(GXAlv z+=N!wCm6drNh+wOL4ox(c){0k$A=ia@luio@ev||$KaZvO#B?dp4$S8kDLKvd^N`F z2CF@d{|^iCZS3!p#2d7!g4dW1KLU6Q{vc)yPs@^)EKH*nN#YDzkC~CMw0p?ZVk3f^ zf$I5!O^tTkOb{Eu!tfXU+V|-qGE&RPx&ROh$~E!?vcJi?;u!rP%O-McJZS+%P)jJr zFfE}yEcI`HeqFI#sy>!=`C<%CguaPS91aIIfHRBMUVV`Dvc_HZ!c|&eMNiVEmifbDxqV`p(aU^4rWRwxq5>*S;T)bxnvYgsu>?)^kR zBwFnzx-7b60^7T1=4#ojU?12Buy2!qS0!NkHo>nJn7lMMuX4@n`Bw|t6aAK{+V&@m zJ-xj#**937eH+4?Tky18JZ!ytxnP0UHwe=i4xiamdkT6Ha*1laWifGsGCS3D$gmk| z=Jw_f`(=O8@B&I7FJz>-c`oDq6k5ux6GTF?XA(oCCbHY!o+)1vwiuT`J7;&hP&y$n zG3oyNoTcbLB!0U_^`VJ(U2i z4-TuRPy-9%*RwbjN6TUVI?JLsx-^Z`ySX!kIx}BwNe)4I9v9>!`*Z^WQRfq6!={+B zYK{IX-%7L0W~4q-=B!O=T1tFys?ZZ1F#Z7* zQ%0rxcQiT=x?60^csQtZSrV*hijWevPGBp!`g?_1BU@gaD=)}ZPj6I9N4_}PmMiA1 zUa^>Pe4ot%L&e$-iW~h#eVy|9#)~agACG ze^@@I{xEZa%nO;U>Du+8YiG!lXMM~_i=K{_R@{#*Ih8M3Sed=$mR9csU>AUH=PDuL z0;8?aBa^FP{O^#L@`gXc-JTnN4Lv*hv8s@Cx$zsPdT*NIH5o{i{KytsU4A{$Pn7y} zKhiq}$umyJhrPYM_UZTqE>n)KGb^oa;2^ z;SC2@-aqcVBvlcxGEIo~=CO%`sQ^2dH6*So`-Dniw4V&^E1`XS84#HE&`cJ!`|(dH zLWiF#hVjpEg{$W0EQ-DF#3kM* zp;i0znMoG6CV?g-6UsJBQy=cagG}J&3bzJq0N>ji_}WWL*t4BU??f4ZeUQkCc8Pc% zDdRKbM}OrrSeUo!TT{a&hk+}yKWC?v2QaNa>0WaDAy5ttXR1r8G|%4ZI9=RU>*>S1 zjk~cHlsf@rdK&;RY0T`ycNJ|D6qon<{goIS5QU+6!4}wgB;!8E!cq^mug!0ZiLd$z zDkxm8aM6*>1w^F%k*Fy}f}4G+w;J5Y65DhAh0|rsqL3@@|9hJ|vSw?}>bieL#$Azf zH|Ywcfv}gSP{Z+CX}+MpaOR!%SSPO2XV1#?Zkg?8iYvZv?e!<}=tTD(gLD+5P{Dz7 z4bI-^=X9x38{SP6ic8D5=!S)8HZ(TMD(L=#?lm3yW$HA6p6m*$xL;~Q*EXSF*)8;| zDU@^~X<*{+H+WmmV6+ui9_;f9kk$6$_EKA}cS}2>k<%m}IivjB&?>YemtWaIE$4V< zc^?fA9jB;*c_}xkdD9zMO&#dZkN-olCK-Ts+opHrY#-4&T6kIq5g36X@jD-jeyT%) z&81-pn$*wg;G#;9OIX_YX|T3qMUM~GFmqcs$H+|!=%lW35!$wJOEki&28SYTS!Rw` z6P&>j#9Rw6x*VKJTsHxw0okaCo8w=q^x=}_Si~>Q2{7}^Lk(DJ;Abe6Ck%%Jp3f?wgBLB_ z$+gP?9f+Cz6RFx_M{^6Ob5Vfclu_QhM^P&tbo6A z_Qdv2aJsBqjf^-w|6-blBTLX$s{TE>&mDNvafpGMi9=$#5soo2k}(tro5&o10@WIH+Z z@}K3OO|PA=AXc{i1K;nxng7r7|84#`WA)bjjUQ&Y$J8NyMe9bhXbjDJ2Kn_2$Zuvq ze%pW~iGBy55Dw^hi>=G&(Ca*JV(ZE_KfEwO9>$+yb{J~p^7{scG~Yi6Vl!`o^S=PJ z=jL6yy3NmBlFZGy_>VyKu#eID0~$v%(H<2bfqfqs8dcHU7TBLiMAv2snd6FzqR;bj zCF8-Z4O<{ue?jzTq6g7m_$?nA3;>#_J%cAY4bQh{(ceHBtXdgp&EoHej~_57_hVG@4-Q+c zOn2=m(-u6gY-bw^mFVNY4mu zolB---SA8vQ9qPP8LfI&yD(V(G+PTdSudxfV5jK;I^^&<{RL;4Y3Gv-bCOyY;dde) zdt|qzx$$ABV~K%pF*{OW#2_fqxol@MZ`JJHMDx|@rtRRJ3UI*B_;d7?C^lnxUlya-kc5fY}P4M#_ ztaqBL?D}YdEtx#a59Ug1KIeEb*ZVk~ypNEfm_??q<+E`By&d^^tKMY~ zbft*8K;+D9S!$<=B`!0{sQSN~m}`lG%&PY4YEf)2+6Gy?4>Y_|(~cI=wT4~O+<`DM zMZT2h?gs&AE6LDu5p{Pj}{ZRV889nB64D? z+YXrHeJ%14rmPGX+oFi5T-332?jGzd;6B9Y#10lsfK6=V!l5;uA0LdIu{_GDAo_}2 z;#?-G&MxHRy@AI$BJuKVKHdjk58*!0vZibOY>eoC`U>t4XL>fSnGeA^$QKJ~=q(xZ-- zkzpmw9#x)$(xLNOXl9pxBGNFC5wBGoi@hJNa**vk(diTg-nn30N4@y*5J54^G4r7F zlycGGOcWh?R9yUc1;Mo?P>#%KRW2UDWw9$mna)yw&=#wwuG*`uC4}vJTdeNc*;bj% zVdtm6?W`qYSu*h^j`mYwK;zL#>D*`HlL>O>Z8R2;7P>Mw;6d+MW^HM~S>@GJ5j9@T zEH9iI(2|1$`05YWgLS>e#hyuVK|P2K;=Qrzk;+sc(y!mn=&`G|@tKet+E%Z^tHo{f zT-ml2w0#cKKC%V8r`qpn{6>2**SPfgTwEZ!iFO8_J(-%wuea{O_UahQp zbXCXh`wox)GyO6;lEE~@0Y!DMJDA)*A<(Gei|>3KJcp?tyTy{*_zR)~3Ct|9Pa)Ia zYmWAwj-F0z8{bO?*fze8&)keIXs?gTYaGVOZ|#4*LgI%?VPY z3H>G83YQMa5NWL>_fiAraXXJU!g5GlP0 z?iRoGSLw-*C4O*LfcXQ;qdnl6d=IBwrnMdvdoxAb#EDBdGLw64M-CmDlw0W^bTqa3 zxU2wvHb3wiFr2mE+&deP{=LphJjrhC!(^s9ypfptgR_K-U(O<*ut5o8tj8`mx0xDm z(}S6oX_5Q4B{>qUV`{P`Q@wjeD!Kyi3~1_;?56iD3&Z`D}zj|p_f(4Wh$9)(b`7p_4JX&Y=ch5C5ZGU)0GUt}LVV60WJ&$8AArj4s7Mu(h6E<~Ti*)Q)}vGkMgh z?;S!JZdaYQaBO6;C_#XXSDEOdscS{+DlYQq_Y&6Yt?*LOVdPMz)4JwI=Em&@BvA1K z3{TF;4kvgh$@3)gypMY0y<47wv%NX;sJ-{^MkqD1EZ5&TvM=6|#ihM-{rm0Tk?S8C zA!xsm4j#GaKV&4E>tDAj$Ad|l{#$p>kFuDl{*bp>nKGRAVgo^h!KZTIGnFwdwy*gK zlr%~T1-%@39}ENPn+VtJz$3F9 z{go|8cHu51|La=ZDQr*Q9C6$F&l;IuIxvsXK@5~FFY?07F=-~H4Y~564bQ54xieR; zH2nMU7-$YHxqNgYwA1m=at({|51x*3ZsYx2+pI6qW-_u_jOGzPJ(yGTIlU^k4nGH) zo};=k3l^NUwE5C#YvW1cFy2XpwC8$9*ck*SR_K`2?)+HrbxiIxWQO>&)pr)X%Q_~# zd_xAgYL&N_WRS8|RtEodjM=1lWo;4_vj7{;X;Q;^UY)Q$%lT-|9<>)4Z!5l7xC43#nt?u%D?s+%!-~G^)ddx#(xhuVSBta zu<$4$0OsO@M7=$(QyIYINb_0%CPpf@08EP1+X65lQeO)|LZoPZ3&4a#3t9jsBU;!3 zkc=o=)B=!1D3U;e&TE889At8p6d+lUNo7(1Z)hStU)+LZf0b^D0GUcMg5v&`aJj8n zhGG5H%$#L2M{BUeIYb;VPww@3gA6F89zinSQu%CccpG&(sy0V5uBCO}sxE*0fplV+ zH=+S(^GENhmnHVPk(aO7a%6#oKL2_CHOPASrz3d-{15T3&ZL8#HT;(jseYBYY`FR@ z`~89aK4rhZw%{RS;VY2F?=aVe2n%EX6P?R?k zsOGuU9&7(gFtgo%7o*+JKvm4dzd4t>|6!Ylwb zn>5J+eo$a-`pt0%Z(!0A=AqWF#EsVHd3;bJyjL<>rw>{q;@W$6Bc$=y8DRE2j*Y%RuV*v^+I%^Fi?dEUR)KL1Hju;fH_cg zh!vAcjxS3cFO@^{W7gA|4Bf4JI%+o#;wmvGiU$flh?J_xCg;M%kgYuw1{xY?5rFUrj3LLw_ezmt0O9m$t5?$n~(8}}j zbndQx55$SV*(M^tZX+`eazyI(VIzleEO#0NGb&kJgsXV5@}9Q8j%scs=g z^-g}=*?e>0ybOF3@6Z6?wYCcFsTUG6i4&O+dT7y0R6@qd`_ge@4gim&0CUhs#WU+% z2A%@lC?rL#Zv`-yFXXKNL3u0SDmvthw*sc8dx%kS`Lm?cc)XszbTnfFNrl9IwE_BF zG(t&wc(X!}n^$S{x%>A*tdZV>h8STFJ;wcYMD{_pD z2@T3@d#7{Gn81@9tJjr-^Yu-6lFR~<$u_x{Ui8j+xg%G6>H*MtjMgM;4tC4Dj@?3@ zlrzR2RxWc}UxrBMZzqeA%y{9xO`L;!#F;ddo|g<=m9yL=bhUZi3z|5@>WHpPdEc3& zW%R0NW(q+(|LvLw(HlK2(fjW3x)-N70~Vg_^#cz40obT7%@%EgpU2)dDgZSnPQJDZT@y_zsjWO}3B<8vbaKWp?a? zpkge4NT1BuhxI{beGkp+_}32r(Oa|}b7gdIK;IZED7p!twDCbFsM=!<@4Z z6o235oQOiuv$_^|bClTJWp9MJ3vxWW#Yqem*)!PdLl;8x-i_N-Zl4^5x z&9ThDaYz_YalJHSLh%u#ggwa9kAiHS&>yYu@mU>|Rc~XB&IS=$ZKWc5i%A1Mj~GFG zjQt+VuU}Vh3*zVF9_rN|Bzgk{nbG}@VP~IqzuOc+G4GV)Rp~wu9YXx-$`A9kemC|p zkZTluLSOA7%>m$(DZm^6K9vH@A-=9oU2Ifai^+NoDB+vl%tw}=n3)Uv5YFFk)*rZG z{GUk8D#CjHZbI62$ubSP0EM$E`|>QI$eNP$!stPf$jnukP*Oj76MnmTEJs+oonLlG zjWNc7R=2;TH+o3X4w_%+?`}8C&%LX{1%-v}rEc>rSk=})yD%_|E{yTzAbP7}a~ZMM zTvV^wQIVYz@pgUUSzj5Rf}7E~pT)^+#@^a=h8T(kd)bo! z37+`t?)HY%mxOnJ{DyZCIFC-JFB_ zX0NPzRNs>v?xe&M=DC6raRD{F{}e#|mWJIF^%% zm2gGctGC>iK#A8bQ#AMLOP4lnr)&l%r^)I3-cq0HU+)2{U;j8Yr7>{T9}P!rS_n;T_orYqW6NDn?|zxd^>Bm zwM*dbHOE`v+68ynTdj7vo7XoaFv`>=D$3L)B#KX@0|A#%$@&+KD_QMa%5aMMY{oK> z6&MyeS4hdGG`C>Y99yq}TRoOn@1t@qW(-@jfKdY~1Q*!`#A_bU(vZ)VCZnT*)BEylerN7%vqR!jjJ2D@OlTZ>r0%ySr zX47PEdU5kD*Yf2S-=uN%3Dtc4 zGk~U!tByarG%s|6}7y zY(O@_!N+{{8_lgjWvI>gmmY=~Qbnl{AM z&dnh%A2#J{?Hq!PeGX5uC&)x!1PKHBpAGhAIG5=2Ks49|()aWFo<|%x%<3Nu{VTG_ zo<5hv{DNX=S}+GmzL)~c0pMR!fH_9FT!Y?s{3WGFG8}(hL^#Rta8PDq`ieqK1`SJd zhRp?E02K46S6HYP->8XE0G>qT7v)|to9%0UN$a8oor%5)wByOY;2Uxg<2)%VyiQns z`Lx6`lu>ec>`h2cK{4LT6@)oM)&A|?Wo>p+qGysZwc9|g^E8+P)Ci1@7>l~$DCqsV zYB!8KsOY)b>I*@zD6t>tV#+#HVlxXHIienwH=6#ftc{q%!)2yf2YI>MMKe9Pub41(dTwX(hDezAoU7>2)3CotC;U ze4RIbBXH@;Y@j?SUNH{;RTWy1Wsmvry;kekSeN0P1!n^g#f$nvF0XVZp$OO*@R{0X z28HQ(u%GeHGF*yW!)zb3UW|1-opOZsG;{P>LWYxCNB77*GXt-z@+r&(`O#-^M_Yth zb6Mye1#bQM8+q@e+HsFmSdLT!ZnTZ+WTmb9-y_a4(}gl;1IYZ(x3k#-S`Y1|4UUtE|X}1ATw}``?#W0t-3Wk7iSfN(SqG zizfT3x3&=BJEMMtp#Ijh={MkYjX2${KdM_jPC+wqr)s*KiF5ky8~qI~iaPV7@2MKT z%g=E2m!NhvA3a0CHA26XjxKW;-Rhrbs|~6f?uBuBlB9(vX?P65$7Nc)a6JuYIFB4+} zBOKc)xAo7luc?b1<6mvTHi)BtBRYrLb%9(hpA9->M>gnc?c^gtlF-*)q!7`i`=a`D z$ryuJbRa^RXF)XB{i~Hx^evp_6*F?1My11Hx2BRpSZ3L+o1NDvxv7%`zs($d2?Q(wfPN&)D0K+#}(X8M~pv94rDA|_mVW<`o9quQ$+Re@kI@|uC%J3 zOneTN7d=hta!)2c7f*lTEZzj@9a9pl#uyC!yj8gb<{Ppy!d@ZK8|V7=kIswFqxTKD zGP`$|rC;LSSgow_>)#}rQ{t2&p7Z{kB#HiQWv+Yn7@Zbp(O1uXN;tqAqNG+P-{!of zwx1L*aF=)wZoys|n2B5RLRC~4f05dO7f@QiXl2xEHY#fwO(+9YhwsxQ_G{`S`fttN z)e8Vbf5D&BtL{FXqp@rC2^)tXdHnZ`uK303iV*y55E|2A4glXt0peXlK5-vXaM$ChUcfaH}!-VjV~t@LM!B6<7Sb0~gzNv=vHw zIfbYs*U{T-*PDy}Oa|<;w6;;5-b@ z^e^}^dz>3(FyqUT@n{`3*4y7{zf;v203);Cg|z0 zRT@Ok5YPHw*4~9ZkGetMk|QCNB;1ZbbeP8$LPkwXsl%Qfx%g|ObZV6r_tpzXzvyIm zXl=OtjT-=S)52EE_op2`7(bCA8ZBnNEwAT(BrmVJ{K_j+SNzZ5529ZYPb^gRXeBmk zr)K(uwd;$>^L*>$!Xxe16YQ;@^6_3i{xX;*53X(o!;A{bTlaJ93Oa$R&}bIT>-N8q z3b|{6@tv|;@Gi|mt{&%l`GwxWTE8_XN=-?1M_HDpC7|wjL$tMbv#L%d{+oJ$O8xR* zNPmIo=eitOa;s(6y!R0lmahrpuL9BLIIrp&4P!Bgo%nggsnF&su~X-l^2g#NQQPF# zmb1B;$r@$fzPqxAtz~zfnPqpYa7W%Tvx9SHq_hC zIWJ7>X_iNQc^9gWO<|Ec!sua8y2NSG#Wq^qJi&KsOWlNKk{)$M$|x}qA}I7l^PNwM z0i3*|8op^a?fegvm1_FGCf&8b6$l>6cz(U?#+>bV2uxwkdp|{y(v9^Wle=|!^Y`-( zzLEYT<+u6gq;-__uA>+ixxVz$mcE1~`PRO4VmNc&*{peo`*ALn=G{@w_%tG#ke(fW zu6im}#LfxkJx_IF~453&Pe59wW7<=m-egw*GLoha}9Q@vdb9@rtDgyX(sSy08G*rK6 z4cHVSM7y-|O)vapx%wL-Hm6D@n6?d?=d~)rbx% zXGx&S$-vyT-oBb+ecT70X_}(I&-dnDbMF(6PQGy>d5~!m=xB9?( zD7=I`v!*Y9TJL82p4uWhaKb&m7~1{?ek@`5Tc71}>$Q)@Rr_jpW+`%XZmGVfIn-@G zrcb2r+wDY}rn_`c>00M2)*j7QIZC-grTn2v`O&mmnmd{w0Z;c`KbG6=yMChR(5SiN zM85j->xyi9C&etYg6qihaLTApDg zLUfjk^?_-z3~aGZRje1eSc~4A;0NoyfmBz21GjUX2fr zn>$^{q;4MBxy-rIgXNfjce&lAp#|=8^GL**f1&n5VPZ4!GZkMlPICZwDg~GWz|T{F zIRN}e3NQzNr&EAAw)%BdoHkDS#)olOG8}O#TjJtJ{TF~_FxH~56SO+s65gkmX6~5a`(lF8^yWM73Y$)IG0*+{>NlnU2&$BN6BWEN6=?4PcvO>d1j8O)!{Pl=~i@)YMrnXU77=VKkf7 zL~SKqrR(`#_N?jJa#1%Kc21sQcIxJY@ms-~Ufe#C!JZm}>&jQhHM1dfAo_^SLYh$eXG8j7|G#4#NaC>u{^lwbT50_X{qjn)9HMv=(~Z!n=$5Fa1t|kekMK40jlq| z)XieiEMADO-BYu^lH%lQ_8huzIttjWSHBC+bdfCB!xquq6mEEQ{Bk|&o_e;mdah{o zysXvp@>b84P0s;A^m?%Rwe7;K{;>i2E~o9Bt(dZmKKe!+w0cxSg)ciQ)-P_Q|A9%M zeR59qR}gD_M*{Jhck9Y!rvo<CSU!ziA1(sn8_2%F5Hu? zqF<2sU<>{T7Qgmf%oGd;@m;f+5)t3)62(S7WB;W*n4;{9HCTNEoj`USVtTa;|~*)-=?-7BfBi;;}2_mBhJ!W}I|4!~0vk*)-n!XU3bKoLstigMD2M zq@SA^Iepo_CGz0>t_FIz9arcksR+J}!tH4g!bn&cMa#s^XxSv%jjE^H!$zH3#28_S z6r5he+^PH7+H**EX&e1T@lR^BQ4s%vX)7)hu~6y{Vl`jClq|#e z_4E(%|1j{;d(_!mW4wVtJ8Rh>U2{V-- zs}l&-Q;#+rFQWijW!?B3^=BEF*dlHY0Dn#a z=Fq-H$J(%{%m*K&?t=Kcm{%!`^I92)505Zs>Av*GHF;n}TOaNKeN5k!BPd3naNzo1 zQrxK{{**!}U9=ITjg*kVjTlFlIRMN`0pbZ&dPh1#Y?ogcmWE;3(ITO!T;D0dbHbHV1%A3NVM|v!apD7x$FUmngSt#qWkMcx7E+`-PKQ{p7Lo1<{-zm6kv{N_4K_x<@cRNJ;@4$btEegM}Mvdm;>}3 zDZm^6I#Yl-0Cc4Qa{$;Y1(*ZC>=a-Q0Np9T9MC+=t^t3|`13ggib0Zwv2?9*O6`~i z(zsxH@+=;$D9O%?jJ*kaP2G4*Y1NzNrWu$+^X2;(OpI#e^;jjV&m(-wy_g;V@jGDp z#gNwDslDg15(`GZqM}By6s+%nR_W!3a<2MAe9^D@DRtpf7&pJ#e(*DZYSbT4{^b8BrHr*5vIZZhRH$%>ST-^`Mf zF>6F_w5;ravDdJPAD|OudUPPAJy6d2H}p1FvWD?*8tUH0a9i0G@|cBTF#GmB9Fa{y z;rb+|)V;cBnKC*Kpg}4N-QaVU+2S>7`gg&%ulq6NXX17EWsA5tHKjGBU*rw586y{) zyKf~a&va5O)0U{59vBPgK)hh|5%|E${8nIS%6P^bmPT^hbc3NhlzT|u4s4gH|I>}c zj5;JO@%`xOMn)@w_-x{oqhQb+E{tCG7!?*RBircXa{ZMbV}Y^i)>;BrUJMr56yz2s zoBPkBMEdjl3u9WJd{a{!)5_!zZ2SxcWVHk(P%S=*Q;UFK>%(C8nC5v0tzAbC8&mg8 z{MXB`QPE&ZQZo(i%O$}Vs>Oq`UPa1`_3_bSBd@;ZhyQv7h=?^m0oxb)-MxpaY5#Ff zoJ@4*J5l68^tFy_1VnNN*JqN*AG))3Safe%nunm`@;#*C#TITM(2;3?9t>Y%pHXx1%3ylxJ9jH*&SN5tqWT3Wv%Nq!N6;IXbIiQorH+A_-%MAuO%LyfTSP6@kqN*E`u zE$ObG680*5O`NZ^F!EKomA`7F@s$+eB8}gL6w>x^x(7a<_Um#vsQov+s@-~dPcFWR zX2``i^IPt&UQPcB?BUx8$wO(l`spS>;yDgj7^a;39v0q;31f>{dxxeB6DFcryNF!< zy4u2waL$nt&M=>ej{@FmC-W(Hj>nQau_Z+Z7>^b207N{(gy2AKY z9D3+(F<6s*^3#)$g~v9?$^N+HEjZG#9Xf}-i@YY37u(+I(^fD&+hM}HpxXBk_Eauo z2c#FQ-wShDJ}tD@Wy?obBf`w~05j_nvTP5jxR()UsCqR)fj$3WcqR|1ei2A20dXNt z19);_wd<`3p5f|^I9t-OR3>t<{G(xz*x;=g_1!)YAUqOK8z=0WYyNHW$gp9IP`MB1ViH1%39?;aqp)7_%@psI#kHWX4-W`(o^Ww>&Tg-l+Po zcwfXX-YX~z97MAO(VZ-R@v+Q8@$ELE4-ezlYDDKOQuTK7NX*pCg9)~TZ=~q#g>zOM z2a5(NSvkx_DAc60z=x*H0*)r%TkIWwk(&q9$E&Jv{`~5_&5We1TK&p2|Bt5mJKoVC z%;FzC&42$i|IerR5m#fZ`uR+3?u~SKQI8Ax-L+$kfAq(0W1_2ez0czy4?x61A7`o{xW-HvRgpc1cbwWK_6KaWGG&rGBnelrz z^5_S~TU0*}Y1Li)#CK9ux7t@<|89Vf@)N(V2|WHi0I%k!6}b3efJgAt3jC3Pf0zcm z^1T4>;iom`$ol|p;3ol!_o#kNz&{Cim*sB2mp%gUdVX4g-x2T^(|{+uAK;bzw8qRo z3UGvNlX}w2E$!p;K?%N1@ubzr6FjA;oeUlo3_W##TjoQR_$&G zAB*tnWOi7PL&eN!ZPVWGRrG(qu9Oj~FfhjK{gUIKa(ffauwNGrZI)jT!qDl19}@PL zlPAYyIDI+TJ4$(6BXZ@N$yfP2Y&&Nbh6+SZ&gcQv8}Kl1Y0ljaEjK_*;Ozd-Zl-O2 za)PkHtocWeGSd`7v&0^~8#h+j8%1rOJhf@|JF&q&==O=d_qI_Y}8%nah ztEimfcB_=(85FjM2--?#Cw9uLfLc9Tis(W1Zv$n~U!z|wql)NP!}?^$O8U6&CH}T{GP6>%j%sgIM=KLY9c@LU zqk&I-?IFIevA!m3?gX4eSGruJF4vSB_;uy8=Lqd?yN-cU$8NM%wqIBNk`---7;aLB zIioUq0i;%z`YcteA&dt@c(}p^!CQ#%yircVdt8?^UhEub=8}(ekl#+_NBfhON4~5H z&9fVu|M0Gua|*dSl{ofxJ+QNs&$sp7n>I!7mKALn)=-&^Sgb=+1#rZyN{nngWoStX6#L_5;QKK z2TeDre~WEB#BJ<2uzG+Plgn67R(-I!p5%=UcdFy9>q&A?QTpPaq^Jp>Qt;a6x%+n5 z*tBkyF|=Bnv)(DhyP14f;@o$}CcvffqDu0MAtr@X9sK9$rgh`o|my&jmo&tAO;morq? zjDxiw3R~H?`kt9dO)ymbS|b%Fh|N)HWu}rf<`5x!x2invf;5%q-Fzv)d-zxZ+NTzd zht&*s&I*=1#fk*j3SRy2UYK+-ie0#ahjk%!MS9j4Ec%5RINToeOz6B#eQat~&++1i z!Chg4tqxgcozj=R(0k>D0pvw(jGA!b_dWoa`FAgFa`NB8nkY`96ynCgf!^F>+}Xe8 zJn6G=SGAdUfFMrzD{W}0tMeg!^XnQIagOmH#=BsfA5y@z`q86Ps%v;;@AgI+nDCJx zK4N6%hMUdm>gm@sT~Iye0y@CwXk|?JV9|G<52dUvPh3`4HhksoeDxrF)-oMy-Uz*6 zc~Mvu7qT$IL;?>C<*Ro!Vqh{`!Qw}n!9Q&VpJu^Fe7H6ETzn2cLtLrFjxzwABpmb1fgsWrUvu08fwY!r;3@d4rL;g0_-8SbYN;LdXxZO%!od~ zm%*C`wGX+e?}LEH6x#*Rr#_?vZV!Gsv~RLLk)$@fJhx(BI!OFsBA2t7aFcG>Df2|7 z%SA*+CfIIcL-R+J6KCfC#5X#dKE>6zgp-T5;`M7ERmcT$j_de5I!Df8be`fe8rFl{ z&Kh?$CI|W-wVq@71EbAzPl4y|vtBl6KYyjGaq^TGjhTxvW#)@FNYcL!B2n$MGM|nB2u(7YTN`JLal6cT`A(q6S zGPkO6apG1T_V1N=RD=CpiAVL<-;sE(#IwNM6Cx>@U#M-1GhT1~Nw2T>apQ03wv>3S-X|Vlqg-oIe|@DPdQn zhp3H*)x4v>gvEJ`Rv0@<`PCkm^JqDf!DbqfN@gY~^FfjXcSUXA`tyU~y2wgvG^NRgxpZ4vZ!(DsE!vp5(t5c0?&cqXV73$}1;i;=;TIn$W zli_D6({zd)-zFQMeM_4(tpFEl8GFJNKcPy^&MaU`*TROqP`75hp@D0PiBu7)iC2Vi z`_a)Ee-7W!6g#Koh1K`cpThXRs9sxbG2G6pUlDw4sX14)dHbzM%aHNDK^fjizJZHs zqMo+o4)rW1_-VD2gbbuq2!H&~A}njx6&#w`tT{@Und3XE!#odZPF|8ggZT5LXl<;P z+$&}0$+%0vmBrQHQ>dU>s3bUo1L2I|h5xjhz$mA%q#yNrFSy*5mmYdt+C$C3wQLQF zC{J|PqoX#Q<6nfl+Q0B)t>=3Ad9Lg8qNxpvc)KJ92QXB0Hljg6*EvvLw~n4nz3NX2 zMX!fOr%+UVXt(65fm*7dJiGcN@m#uRXiV&`B*AxU6pF_<*P%E3$T3^AGNguCV`gKk&vq3vUgPFQ%OrBbXON5Qhyv-mX@zG2EH?Bd1D9jehwvs0Q$dWns& zPfiQd6U^D#BDPsFSRV0>?f{3M?Qzv5F?#F& z1(A}|nESw)2)Yfu(>00o!AZUU0d!~lwl zh=2>mUlCO|J2>34!rMz>oSL{ zGTOY4bj&=$7{59=#B@|3lsnCmhqdvQq8}4HLUf65{n7Pb6y(Y=;gv;4xrs~%j$N~I znW@d*Da0~Cz8Z3Jr^yaM)&r!89^{9CJPG>=US9J8vM*oR<|mWb=C2jHoMquSmvvI@ zjrCauz1p6MKFjgmeqZpIeKnu*dT)DV(uUCnCHsxWZD5jY;Xz<8r#zbfN3O_E!;eE4 zm(x{%4-qsH4+jCpPyK+k-uNm1^*JM@(z?P~pmC1|^yelNK~JB}Y~qq^A)Y*M zZ1?bLa7W+bXCzukG>9JqTm5qC17m?4K*pM46p))&kMd5u-Ib5lA1p7uPit&yS9-a+ zj4@1=&Y6#1Y?Kgk2NOa<#Mq!Kf%;|;r0FeiOUzk${8mD;b2Cgb_ktvENH4w}eAY@n z=hURmY*XcE>hX>`DWR$0-2zQ0VVHjQ>5NLTvT68riqsFkse*kR>dMvC;QguS3>u#X zE;;Hbu8rOSP%(&>@d+B=-7s!)Pd2B2?+6cNhNxtxZgpNyJ%OY;z6csyf2(~zx5#R= zv^I)}oMcxKK0)p~oyHlPV+<|Gc5%mdk9YGnJ<8itXKuc?&^!P7HlH`VQa(>>^LYZq zY{=(9#^;ANjGJ5vpLceIXZUpd{rhG3tDiXqbIvZ7@n&`%#M{|dCcFjSDe!g$b=X+? zZKf3+v$9FO88V|Mt?HJ*(xj@cF#$j^EVHgCMm_XH9oc?diQY@1jIhSa`)4Gn-{I)F zE-mcF-AN{+j;@+ldX=-C<#Tgw_rnvqe3Lb=g|6@@uuIoq@Rpdq#^H%8Uc5hLg!V(| z&y7${d?A#x-6}y(i;!PBLcY)@5 zel8iwrOG%hOOTch@z^owZU6ctZ>J;hS@O2+Q)jj_l4*lm5y!HVPLMyhKJrXi_g4ED zy;Rm5>_eZW3tUM*Lpp}Dc1in#h3J=nhCP&}ZQUAoQf_|Oi{C9lwT`1{;aBBq0SP1 zP2(Y+&%kQKe$&b3#lV%lH`~!a5XR%1zS4_B7=0GVb zFnX`JUj-t=QmW;-IWR7ALk!FhQV2i=>{Sj>|Bg3zEbp_!~;+>YG2`!e<-PGgf{p07s5nzlP zakC$ur$YIy>T}mG6Ia;rTKx`f=^onL4Y3Jl-ddVOyHkZd)fEgBzXO~Tt8gWkLT%Z9 zY~y2Z@lGM+3_=<`C(vsCN%8jQSwj`$t0Fu1cpu4YT~bXJ%7e)C_hec>i-y4Hv`yL(+NW{J{&Czp>t@#ubiRSTG4C4q zZJy2gr5qmPMp@U(yBmdD)kU?|v(;ZQ`U9DS{gfj$sR48Kr)&wt(@CGiv99oLt%Cjt z(C`|?gad%CzN{1G48i=#U=$M~4y-o0=TM&b9A4K9We2~aw3m0LU8%HxwzP^_{prr= zmZJY+(TWLqE~h&2d0e35nsasaXFB0m3I1;eub6PIV6NzdnGnq14Ms7m*LFs)ZbvI7 zoTn_W!BymR=6#C%2Wi9k1ot*Bo~k^%!UaUq{!}0L)1IzX8xC)zc-bcGO~L5iisVxn zulj22tt?vQz~*n$Y@B)6joo^N$7h-iz{};Sh27EY$wbb!Bmkv4X;s*>8ylY zJE(?>=`xuy(X^+{AmV7_>tyK&u+XWY&?x4Lf)pGMq^}@2Jb;g6Y{^%_JQg4oT%;@q z!(MW=TC&l2ALI6*$nU)CtdDYzIV)CB{T?Z5)7<;6I-Ptj6-xdQ`d9`wUN{8NiZLSb zl0ifCgv=l>alwUxj_htK)|9QxHksEj}ldCVr2lSb2@2vtt@q!L0o%Zj*Gn>${5;H=z+xkt-S3u zC*K^@r~8d9zvrFe^5vq0`GW8cSPQ?;kB%e;Mng3XwTVDB*_>TA+hY&y|jjt2PaP|=LW-D7|REjuw%@HKO(zP9Ly8<;;eBqj<;i# zR%N8U{q<^#x#&ldpe=)Gr}>h-or zWtjz!*}(gf%D*LQbJ3xkR@VCRBI-UUIcTtKR>2x$l$29&d-8)MXlkJWZ8AH z+4$oWp+`*_x-aJWxnhvTp}kfRA<#9WWM70g?YXoV;zGZBD?^);tX0@aFRvqAO3K+g z;yT$jUgca^g+_0iy}inviTjOSCDGm7=3U;tY6B|UZGrnT{5QS;F^<8cC=R12I8{WX z_hU+;J6oPkFUI%gcs;2+I`7>EF7A?2PxSKSN z^UgE1KA`#@$>yoqJi#!z1%i##NNiVa0PPS^)_ZdKuJC@6_U9*Gub=(m=3n0|Z$&80 zD_4ZPvhIq|(V!x`#14Lme-~@IkgbO=Gu> z-|J~bN3sgSvhZ@XX6x0bf#bst$5$MVuj!MU_^MD{MC_+s?A6_CW| zgV7_DTx|dR4J=%BqJ|`ar@!tHe z2J8+T$2lCPCAxcxrL5M?*=QL(@mw2w{Z&5UlVGopHeLrbzH6bUu~I3uu(g?v>z!y$ zchLZAh_+Y8lzbvfNimuR_WnY35PfoA&Z6JPVn-{^@Ynnh91vW8igj&aUFGI8pazt~p{AEVOr*xJJ1Jh{m^+pWNH^YecS zx7!-W9b5MnmYzcuw|ATM2y)_NxA!2X*F&BDK8u}fD-tI#0N<)9BP?k2L_n9>G zL4`8bDYWPAga#g~_QtvLq0qh3(BCQ)LzW6XJ`K$iFwT=V3cVl=Eh}_47kX_PiZ-G* zzO@UzEe)kXd*l85xbE)9Esl>=Co)2aut>+Uk$HUgje%Ffl7KWokIxrSC${hsT5tHI z`r4&($?J4grS{k}{v156m!x9Z?s%VK!rSQS!~I=$l-}1>9>2*#HA=0QDkfV;jE-zh z*9zkw+z@^ENzozB!cXBEKXD3>%Tkcb1;RPG7ne?U!w{}j`;dO_vlNoixv-KUPD|6B z`u>e`BXT~0HA3{pgLHS_#*r@OmtjnBcx zGW()-V&A!q%k4X_@g042B2rHTsk1OZ4~p6xX1Bh4vxqw?@go^#7vJ_d$i4ABsY106 zVT=@-`iqSE22Fsi<)5Ln^mJx?SuW8n_q|Veo8IVH6n}fc-`C+UzGG@T7pDQwOMn>@ zUe7@;YgF4k6>ayV+m|+p`lXfmvMg1(brUUaPUiCiX z2l0qj-@ec|JN4{RXnZ{N>{V!7lX_lTXxx%|cC9Y+vvm_bLoFkv>j?YB6k)%bBJ58V z7QbPa_cU^ULv^37ezcHrtDm5~(kYLh3Shw&JKY041HA+Nxq*JDTJ-3;EL`=xYATxb;sueY^3!i8{CYiosx5rsL(J zg=984%9=biY1e;`gf^-ugjdW;x~S@ULviIKT2z_7FzWV=0lOp5`=Eq%dJzxY zOEm1+-X`oh!@gl(6L!{^Gx_0PrQ)UdcgHXMK{y>TL5!ZaLZ(C?t6^`@l|i52o;^Fk zowv8AZwB`OkAMg5mfbskBbj!&F(}8myq2M++>*4`oVDw+Ym9MxA!&^D{v^q3;MgT8 z6Qr)tJ;lW0(q~(zgUz(gq%kgN91hCt#L~I!?{f3X9y)W?v)o;=)vbb2@31sJD5{>L z{5at&Vx5Xg{uaJ)9Y56~YxZB_U?6OWqimXIT^b+x?xi>r8TU-@u7_Q7)7ZELMfWY$ zmyIRiLZn=@Vy=zcj~YOH+4jFmjgp1-3VQ?pZNaDGk?7lSJksT9?Yz_`HS|q+c^X`* zXP=%hZzo5S@<2t)yQL$K%hEjbmS8%j^^C6pMagPjX9`yF?P01+kZQ3!MJ+nuY%Mz2 zDQi(G?Acn(vByi62f29jwv%qBX7_JAT_93ijhMQ3Qj4q<)a#-_enPfOJf&Hi=NIYe zImY3}=U}#|T|$);T1@N5cg#2UF1pc`(P05^uNX!%gr>H^%O*}<$F|q|j>^uBQydnh zE2E#P5Mu?@7tB33FLvDsIv;~~8?J`nxi1s=s@DZ*8i&-FVV7tH+wv2CIht>3!4P z7I#M9jD?RsbKqOIdn1l-p846=vBjOSaK*Ym?z(i6lEVGD<&W&S^zF3j7+~pnxW~_8 z4j^FU+?(I9RI*9jv#jqfwm&)@#-RZCHOREq!H_1o1; zf8|mLU@3t(r#B8)&DutlGiY!85f}RAG?a0|8~?5gZKk0dBYET3xzIDyP|g~?@sGRE3)4{T zkH_ERLa$6iIk)u2PjaDOO+yO`J=lfbnubbdFwT2kqW6bs=-()d@vU6wV`=E`6v|Pj zV1JW_{#>EjxfA-IH1r{bT9Hm~%>7YP4nI)nkNF82b5VS7qNM4x4vjGV`EhZX_;TZZ zhwm>WOXBk5&*1apW)+9JEe=bxdoqxv@o#tdB=J};o!kEO7soGZL-vlpuk9&UTX7cM z)py0Np6Xj-SAW+OBcp5Y*^$xlIOWK=2j!C;8GHS{-ehF#T}dahjnkKSJ&vtFH(P;j zH^s&03AN2xP)WvEo692295efh^`6GtRPNHW85r%$OM%@k0H8HjsLyQtj7V)yOxYQL zTys9-<}fOEHT!Zt&$qwqFxD6LmDwgduYqBd@Gh56EZnU5rLx~w?&2u??=A zmn-Ni_jQGTu)uQo0^dH)Q%UF}Ey`CGC8jWW9xuKT3 z60{h1_&dV5Ul+X!T1Ip6by_`>G+SmC0>8_VDt*qx^1icWS3#{7>ll2IDyNj3 z-Hp(BwtLAo$4pJ)AqDs_DQ+D!Z;jEb~kfkNd?xqBtupYT(86R(p=n< zpVPzIb~Gp^&|z}OJ#+`dg~ijXvqq9j^iHjlcH8GjMSiaoFi0rPFkqzcw->Eo8nZX zu?>i;z5c=g;{5n1XhCwE@i{ImVa!GMmh5sT=M-3AvSx~sj&p3dX6j-@wPS&DUwPph zuWzo{Zg(6b=X`Ysr0V5`dtE!bvh@A5syJ{d8cg2!CHxTZ&a-c9xV4c>I(E8SK9m=3 z`S6W5Z8r~)W!vAncI;I+6teUSAR2#@OFZx2w?4R3^CFS|ymgmH#+KpO@18|}9y@AW zqWHe9#>14KTk>3^gtRGz{w)pV%-$Q zjsMVvUX+G%Q{5Z?nhX7G5?Ws|zSafZmbB_^*sn8tcS?frUnVyWSAmW zU#{DbObwxIOH2R~gHc~SG>z)%Q-aoxB{=-ES_T5X+8a29>O&y%7Xqq#r$d*{x@eMp zj8b#rEk$P7T7L(%o=~P(+qzKe;>;*de?yLlytI$E2ny!IY0B9|Uq+tsrg@+LbZ(m2 z|0HuW!br`*UO)ZD1}ps98`yx+1&VM>1`M}1P_5prF|46JW$nM5uMOmNuep~pG0pe^ zV>VcE0SmC6!0xv6qG>P~{vBkwwiJ$63l~$C)}8Vt)cz@8u8RB(sQTP4tZiZtDj)t; z-ZJY8hP{8{CWQvz`kkG!ARCd!?;u zAEIeZU204pFgJ}!2{i|PK>>DIa;mdb)-^Fd+OSHVfNrDrgS5~l+~qFRpM$KNhRAESzlUmRvUY5P#ZIC)usCADb)w9KBni^tB{pJG)g6u zZ2glWR8`cD*jPQ(c4nE!sLR?(g}6bDAS~*v43`ICT4d=h)I|QWt+(j`uB)iLXusY) zR$e+}FzIo*y2uInrJo@&i&R6j^XbjkdP_C{SplkDmpES6bRHMg-BZlHJ>D*_Y3E0) z^nOTweqKmP$<@y7ed*485>Ks)eo+wafrfK!VOMkviU}om&+S!A@U>p@3wI~-NsXaF z&dFB7T@`XAAuM?lVGSxHW=%?$Z&E4hP&t`YZH(gOOjEN9!oN~R@u`_zuvAlg_5*5` zbCHzHi;tD&BSJ}q&{Tw5r)}D}_=AERk_EUsA=5QiPE;hP%^WX5QY=ed0ImEx^iZ#V zPkNWR-|Ag3OchD@Q3q!zQAw9dS)g#G0;!*zN_SoX^_Rrd$3&)*pZvzo!Lp;oD3{i9 z;lETN)13RojQc;%T?huEBTc{A)#TZSDKA7_~b=|8r6}}p}W%}?(ly7Y!7pFM& zK^X1MSxM)O!1!U<{VKirjuDpU6yp(gu$MzOs`B4t9!+Pk9wEwx(kD8HQf_v098++R zJ;jm(whrLrk9&A5kZc>LF?LI6)jW^7Q7GAGxlqSss1EIdXeB&Jxyo_p?q^E3x*=Qf z`J6S+I8lvVUe21P>uRQpC)oR}t;ewF_K`s+?9pznijRh+S=RiQHdUk*eG%UugQG2? zjm@ZVg${K@t>GY9_vvI^Kpm>P#2d^ddXaUgnYpe^2hyc?CSH|cFF)ZhbE7F{vzO1s zGD%*rMEBh&jnnH;Jiy4|T zfvPUVIMV%9`}sb29srMQy(?8L>YF)Dd&&^F+7@kV@>W%NBuxrqB|Yobtg3JOo(LtEOqkh zFLlb*neEBZtz+Wx{<$f}``O-tMaf>v+2Vdscvl=s-PC3^J_Z-QTSUFtueY#h{7VI7P;mw-ssgtrXjf{_YF9sjmhAeE#gmpg-NpD8 zGdFb4e2}Yq?(S}pZIZ2h=VdN1GqHC!{+j~1nEGVkINY@8_^A|2OB}cHqDb5ZqiBn2 z0mdD_l$-bt`1;(O`xA}^462y9>TLnx)^vg*`^B8>{CNK-o}A5Qcbwr}mnWBG zkNHe5IhS{ek9jd&jKSuJt%QcmaU_6|dQSUSVnij-9BAqF08h@WO~ zV^?5rO>>{2FG$s%8JXSnA&qk~LeH6Uxz3eYDa#}}pziGl4da#3H<%(kYHHfLB+Bp4 z_;!nWeuOx;T;JMn{EecDee?ZB;r~)!FACGCk8_jj{l;FYzYgq?Z6B~}QXjBq#f`|8 zx>yrYeQ_H{O9dM{q(uF0r^^2Z=`yx8`{hNm|6qlp*>ACY&3}O3d@C3x4i!ug{s6w+ zW2E=UbsYBsmMbQlOR=I=i;!myE~ndlGUY!_<3#Nk?mZnLxYptP>TONKEb2^HwgnBD|rREIEIYb^-n0yx}r>ZOm!J>p) z$yxC3!RGW7c&~n>B8^AeSXFIUo`$sOhgM-?G0CPYlTDe2nu<<_H@e61lqEz~`Fjw;}(!tnjt{NtHA5Mp?b@LiGz<#2+-FPqZwhVigefw%qe9NG%({T9V z-tKOW4Xo@Tn|>fV;_jvwv~_j(Ph?`3K{7dKbR+uvoo@K%+=|o*2wjso&G%j}g#7c( zYUKnA@*EIn(V!;YD0lM-27`$=$vJ1@IDHbcTnp7`n|&;iCXO*k*$SFC8Yj=Mh4T~} zggRvLTT0G;XBMzN%LAEs7`=1~n0yT4tVtT!$y0ziOd1-GQf@LVWDWw9lOl|aPCG*q zb7vb}sDM{&XJ|Ld=n)&kltmVgc+}k!w90)SL3>K{yS#x-gs~o?la-<(vx!;K=LQ%XtQfP#aAbdA>wv;*F z8!nbE#OPpn8*q)?fr^XS65p=G>3QEng~tAEG@%Sv*eeIS>6HV`UT(=}%Mghev<|7t zc&>2uGf1X+pzmg=vri)2To^hk;=CGaEy3uy*{bp@n1V{1M_?`ELK>BE8blvZ6Qi<^ zSB1DWG$X9LU*?99c58`^6Hf>>sEt(0)fs-cGt3l%!iAsW<{20B&OgZooqv)&j=p$u z^qnrCZE|;vdujvDoU^Ujw~h02w3RvfaY*wHWzI-WunsOayo-M7k1lpd*2t3b=)MGUF0M z;$ATN|HpRh_3E>3tzFgw4O?rjXxokzT6fozwUGBy8)HOU5Dh{)Gu`fmXb!H*q8&J| zLIzNb=HivL;CXyA-uZZ;b3YKeV^K@D_+B?=1a`Oc3E^+=a4XR}kiXRnAs1n*qs;|i zzyRNzXcHVd!#+%B*j@J@#v;)+`<3WA=9*LQ=5C4|M^?Aisq>YJrQ(@v$PrN1a)Z5-Cv+~=tz0l;x0T|zLneD9-QpluE>qxH7Sq;V&$20Oso!ZqR2hY= z*NQB?|BReew)r+0aWwl_Fr5?YepSqYb` zFg14Py(QG~&&7Yd1mr3&LiiH_@Hw|HjD$5h`o!BI(Jz|6F8@1XmfohXmL=wZ7Xgab z1mK+sfH^3eBVE=uj-N~3o3fW+UU-)u9z{$c3Mty~IGnX3{qRj9!y;BcqI-mOY$-g9 zV_o4J$iSOh13SD%F&DPj>a>vF0f-0YdhLw#q{sH0sZxDW6B@vr0Sb($`xajhl{49>bh{T z!mTfAj(wVXYSy5ayG}-C9d~zilVUW61A8PY+`tJvFzr!_wjnsSIr7u2%@Hc!tu<$P zTQ7C}NNs^Fq?g(bm}B}mR$rwUWyXTQ)9FdwA79dffTh=I$yBxjt|q@Z)W6A$-U991 z1Kk#q!#Codj!};wT7-9}Gl8p~j)^-wLo>!!IM=)})HW3~cgb9=m#TJxXo-@)NWTk@ z!C%F!ydVab>^Pmx$}%-zE5L(t^@_`@q06N1s3BJJ04^vr)kUILkv5374^I!J$rs=aWnjADX3DFU*}Db_>ZQ58nX;EiR;Y3p2$5G zPI&n|QqMhX^(lPpDYLf|JiJC;bi4B26UYVhuemcB58vNphO!BN^-q)L{y2_xg>S35 z?;@BriivhL@V!&;Cpy7zX@e^!2A`jTKiLWXoi?~)V(_<9jE;m>8S^HZGZ;cY=Sf4X&6NoOMSG{&Xk!?QL+y#Na!o z;J@euzoQMVm>8TM9%KJyC-|LhaK#w-=zZ9f*0Of%`_E3&`OaSdVE8tggCFfiZ89{5 zOBkmH)=gt*)E?<1+QlyztAg6>Ty0kF{&`92@H%VB!KgFwT1L#ZI~ZzyFq#W#S{Uhz z&jmLxwxfa-fxSFgL!ncbZ)%)u6=!PDU{!XCS}XafP3p|#m*hJgLm!e256|=tGD2Ak zM0+Ts>ChIZLpR+Ew3*^Es0ohwq1T zJ8>J3dc>Y06qOtX!@Y1)GPcbd@K+oOB1C6pHWv|lf-lo|y1V;X%q{xlx2cxUUeXh4C(DxL@k& zfO(CA)o2B?f9mOgd98xg4+QhN)Wd2(JFL;M=4q7G8XItu)l(98d2IB?4g(U2-e-`e z4%fR!+V8))Ir3xF#WU9KxF(Ns08=Nm7GX-DT9b*9GyHIS+~vvfk=Rx6m*@mOH08Ip zX)z?WI<)W0wKqP^!=P~`@Ut6b#?ws1p%!8Jb!T=;&KPcV2C>w3eBRgX4Q}quq!}P$ z#l6@IwYQTzol(VmR_&;hv35Su>nXUlvE5-i;jGVY95Mwp<;g=acPX1;?euZq!w!k@ zR&2*O)_SrJX_XA7v_6d14XnTQZ@>M#MUD^LXLwtRkK;1z2S%TlRqUi-0DLJ*)ZtA8QJ|&I*!FQ)lmnBkDRSQHRG|E06>}hfBfj5>&TlR&knLI2CvnYQQ~^SJ)6)-6CM>i! zJc(Gu@D#q+pcsb(lk-2PHq|t|*f}sfM@_}+T%xTA3O*z9=&=u6s`zRnl^27IwOfuAYWeeVa4V}#& zFbnDZmS>rQWL#MHr(BaMv=m0r@#iN&eoKfuc9Y6qFW20o*-TH`M$4e3b89N5ouYcs zya*zqg8)g^!#jAJFL&$Vvt-!meBy`eyq{}QogVA?LDM??=zT$^wL8#u?>v(u*!jV` z^lSZqxlxu_;8T5lfVI=}8mHjrQQDAWQMZ#EPaXD!TgDU<*c+g;KErRRWSOs`gYl1a z8W66ZP^=#pQ_JZu^JJD}y4^=$NH5E)zC^9zZDPXpJcXw7^YV7OLwzqa2#R z(D>`4;RTq}IP(iHQNrVz5&4qiB@ANGsknpCFlHuxlZ&u`U>R9%9tqbI?|~)1`9?We zrD$pLn557;=&)BYE*I)+Un)h;QUHI0KoO>LXBQsB&&aDWXm{%5cht#CA;~95ZX^{- zU?BM#t||0gM!oLs+&F@~WguMJnW=1Sjo$D|a>DAma^T=YDmX^*Rq}uRr4q9$R`FO8 zOMU%IK_^V*!mkSRV)t-(_<4D@cehMqOIe6@xQ^=NJ?2>Fw^TFHo2Zz&9UGYUD7>qG zo$N23!?CV#uSVpfi5Om^n2>9GRmwf^B-i-8%H5$l1`s>3jb2~@R<6!wPW}@vMn>UA zMdnx_2>dgF^{1U_*J~J7-Lfdz2{8%u@8H{4W-9-L$&4`!aE@Md1(v<;6U$bod);##F5fG93$}3Xi(*UZ^PG`Yo|HONAm-l=XqpYtHs)t|Mwz&MUh zgi#EHtzUB7QnDi8^-PmHF|LTSj+%D$JnYTc#np%Qo(z=IzslSTGRtV(3wj^yu8mFr zNnk?3#LmeTgxeh#y}foz>gh(Im+|E$;GOH6a#5Fg?@i?K0(IHAThN_%y)(I(7%e)U zWYJsH<}iQlg>Q|UT|N{(0!|YDGJlOd=11G+${cUoc$=p7xZT@=e^S2x-Z0;`{kOo( z>gB_`=vyqG;s!SCI=X9S1sgH^mL`r|bTSm=!sl#635wz4q??=_C+l%Q(c6F-;R&p` zZ&ke=kN0L%47R_}*`MqL28~Ugq(ID|++K0Qx05hY&FptH6kNr>gP7{H3Kt3DS3OxU zaY`#Xu;xJFAeRfmNsSQTSGoU;@1K=Vdbdvb#W(94r<{Q$TNQ&@{VWHKI*}DC26S-k zMks`oyD61IPp($t1m@S|#X03nw9{&{8~Xz99w7Hi`S9ydP~9Ux{2hyrfZt$!0L9GHr1xj!V1zfVcmG` zd5gVMulB~(ceHOg8s7gR-l?inM9ns?%2??2G;;e!GVf5NY`h5WP& z3Zlmex{8~9(|9uR!%FF(rifU5o}%Y9x_;)JGP-FHy-Bkpq>2iCXCktrfTRi=!%u1zA#_n?2+g$ArtlG4W9zAFpv1>#@#W{^u zW{S8B&X1Y4?>p^q(QnCPIu-51Mkkw+O!RM}&w&JVO>|tH=R(%Pi6^j^sYm@)9|6-q zxH}6C+d7%LiG%0v_!XpZx*Oe-0~{G56?G{JmSW@ync9lSuU)*#!QKE~Z(ien88TFm z2WAVh&C&%iOZIi`?nKi4U37=fQe?c}`R5T(IA0?2>@#Ky8J1mqPie(Ws<}3&bd|o{ zjnh^3=gDoiU1K!iZ4`L;c-#z?4OKoD8w;ZJ=q#o48h6DEyfquFeGN#xe;A!sJ-LZb zzzdH#e@vfX;zE6<=bBBrMR+Pd6CYJb_yW1v7LoU?YYTb3+V)`gb88{CePa@9Jt=UJ z;L-Q7bS?SnL4`}f;h#Y<@o~jk-1#T5R#kK@r~Mf>Ft~Q{7hsB|#f2i)w->#wtFmY( zW4duR1u`$S|H^YLW+j}PM!?0+xkcx&M;y6exT#CIGsSHP9znBn{B71%_$ zk33hZSE?lR73H@7d^L6YPnFgAC$R-xo?FiIq}vuk+6YIZMol;2xg&b2gFfmU#gaiC z(G{IW7Hdr(gQSapp+=^$X&dnU3w%N4kX+>uU)$LQoE}D}1J2x&+kfzgLl8&@`Z`4u zQcr3>>f769|0Zp!PovQ2o>i*%qRJ;z%>XL<^G_-q;kQ)V=bv;0 zGf!McKq>3bTQ-xn8!~c{;~e8(H1(+aA{c z7eox}m&Eww6<+fn-MGo{{s+8%xK7yjR+nX1S5O9ft>DIO2Q@{6%eIlyf2qs%lltT* zJ{9MxQ01;*eJ%X7#)C$MFa7JV*M0+j!;fmvrry*ZIcjkCw?ctA0{l>5&aJcmoDvoJ zNhTpjv!w@@_aEv%d^ZiaJj0v8yI?@(_AU@1!OwL5_TrC&EpI#iM)<29z{D7xK?+Iw z+U_9Z_A_o<6STqn&Q!V4#_wS?civN+6~v|iSTC%EzMOX+*{xIiTox=FEBVW6xnLQ_ z!Te=*oKz0nw;SDX8@-?=*ekjO9^vN8%+=OU;T64Uc^#6 z2YY2*d|Yh-bBl36$9eueRR2ot`>taQ{x5U|_v^67Rw9mqdA`5Qjq)ogA3F+?fp+PZ z2lr#fXKL7%U==IagAA6Nyi>!j60BkcJ8ZC9Zj6Qr!75g;EcKw_zZ-*HEm*}0R=S_T z{g^14nuhlXR6!icJr+P{{O>% zds+*z;0?QIC0JR(Ry7V5yy{3o#+`9;eT6yKn}K>t_)+ z+-?xj+2&6xJ@%&+8~fABi~VT@#s0JsVt-oDu|F-(*q;`f`Pp#47c!df<40PHv!pC@ z4xUoO-vn-Dc|xuOu(=?-Str@C=t z-yUS|i%z@$+587G@Sr(^cz9mGr_fT$Xar|{eq$6m;*f=enC48pa6q_f=`5Ajum$f9 za0jZ>4^T+u>IlQAP(~lb%hU0~yD9#mnM<~cy<6jrot7iV7j3ZVOTOd0ybryF0gAzB z4jds-VmxQcw~)CO@_L4uo}gIb4INy)lS{SOX)J?-yW3+i!M{y{wa9M={~-z1F0dW^ zXcAohMH)Qf$l>vEwI>$jMzol-0o2ODGCqw9J29&1Ih*<0aWbCMj?<>E9jDDt9LJ+m zNjREnW*brC#If*;QTDhEMJkw%iWwSmbIMB{!sM|HfxtS`XqY9$ZoW^flwY1C^U~{uzLtPt%o7VwX-YDFB2Ui$f=QwOEpaDd~aHi8y>x+FZ@nEJ1{BRBs z&418p*me%89Bf?QD=kCCm#Zjsr!AdgvqTS&D6YiDmT6`W$C=Ht%<6Z`7JzTdLRTkq zr^2Ve=8GA8wGHs~r}&UX%oCw}=j;2&8-8P^;HT$u!z z!|iRfRNYMbpU|3Sfi<4QOmmjoMe)XB$g$xvx>1Y!Nk7z>6O3)u7$+vMLCb~3PV4zv ze7k8Qrsf<6GjFWBaRKR)I045HCngXQe;F;Y;_4_~<*D^>?8E?9;tX_(uD1U-_$XT2 z7cd8vH)ZnK*78}zZ@DmgiAGVC)M()WPKCE%tH{7w47X8GacC>zi(%b)ju}HAV#@?# z%mq%2<%>f*wb5{_5uQi43^ya5w4;1v6QdYbovS#saPhvyg=-*jo84A_hFU0otfw?o z8C!tWGOM%VVDoU6^A1C}m}DcPjeo#FMmpjOtugw`DMD43zS#uPIxHC4dCBp`qt4u)2(pLmrL_s5ApwqfE+Gl_SZl7a3xu@-~tGmykx@Rp8((YekyD3uaz zd%=gX%dW}&57mbT z+WxXN)DLSpqP1{Wk(PS7ErBg!@gLmPvxNxouT=h6mG8^9e#2ZoLro562=tgG-q_%P#MZEhz~?OY#R zFB|KJTxoW^&UuM^hQw=N!%saQ42><>XdVwwl?VOY_FS0Vcp%(`XDzYOo$c`|l3%eQ zXlZJQUS!#ydj2ENSXiTA)@U%oy)_7;4>N`#MQU}U1{Z|q;~UXb^AQD4HZS1ALs1v% zlbg6mpW&81;j7s_x&S}A6+{ysC3GPA7{8i9hi-!3Gn5cS-bdN#t5rcpM;mLwuBNX>$=0?{$U6{JJpqCxLe# zWzCK8|>~{O14ii;yI`gzvNjW zg8bIK%Z?&It}rn1UrNk}xTlgb3-=(4XkUH`Ex|-JW}lHlOMtb$#+iY(f$}u}j-X*B zr%DkPh0816&Y)mQ%*|(MMC%IA@#_j){|-O%7iSBZ2P95UCS=E~@5!bY7~*9maL z&%kYuAAOF9-fGwteI5tTBWL8e>cO#8x8%O1ZfEbWet*_Neq$BYgQ{6>WT5IUy}GUI zU!}Jcm)EPjSH0Dpl^@r9z_qa7TT6OSrLvDI@VMqRkU-PBme0Dvb^JEJz)!rF)){_} z_?tc3Ss(~j->o6$i-6QdU6G@h5nV6;tO8=fbEwplqA%gs30@)E5{0fRdh%Z;#10E5 zzDoy0#QHt;LzZar>TCXy8D0<`EW#EiF0F!COf4f2^!hBBiI%AI>O*`wpK@m6^+Ip3 z;%}V_gAfxC)p}QuGv&n!vL4Cwv|hA3I!^UI z@Af*mAUvFAX0a`u{jQv|+hm8M;a+4VnL^Gx0sPaU zxvgr%(@f~w z-5WgI>lwy7w)#{lr+uBG935M|BI9NTOT$mkxZj;|pOLzE8Zbl<@fD#;yaUdAa`+}f zYqMgY=nIT9anw$}CFCI15}xlM=f{w#Xv5S<*M?sb@*5n?mNCqnKzqd%s#gZ=?4wG87bMC?r%J15)Q^kUpXI}-X9)@J-D z6%mXZZoAIOL8n@7ngiax{ z&A36rxIu1&af5+zgLyf|4H(7^_?0s*@HXR){+QMd`Uh64KV%p;Z(3r<#Ee^LM?&8c zwi!1_7&pj`Fm5m~ZZI#$xBR=d(I3;=LI1#Nb^Z+F=1mztHfG#HI}-Yq zu+6wZ!ni?hgmHs`af5j|#tj(84fvHaF7P(vj{ca|4*CaHYoyCCZr+sfH^+=yXh%Zd z61EvPNEkQBjWBL7Fm5m}$G8E*xB0GZ}pw}yqar7g%QhpjRnkG zeV1Eltg-LB)py5U`_5ba{n%^Yd8_Y`_ac9dzVVH)*?xE@`B;#}hj-v5!ym*+?Q61` zttcy2(tWE%lCGVwwuRYK_hx?Sd5;2-vS9qnZk;^kcCf{;+6TjVsdag*E$NAZf_0?JyI6aBzLv|Mue%eaeC5&= z|6r}w+htcPx}qb2h_z*%r`nT5-AS?Z=d5haT-1Vr5|2i>bm3o#?)H{0*G?DyODdkeqecldcp z?8#co^S0gA;g_Dy9pFA2nU%dGS!*QbYjyjupsR?o0NA)uE&MiE35Qsz%Fz8+XXrqB zPGEa{Ebztw^RUD_->(-N*H*k!s`oqbN7#HgHBqnBj?DJU}vn)T$I-~W%v03K!qnp{GRMy#Pe`R!6Ybz*`sIjo% z9NCSn>(dop$w#1Cr#rcGAMMf7v4pmi(?(a{ zPQS?9k>VhPR?*w#M^~^_nH*?8I@Y$mVRv18R{mYvxc!sQiSOn+I(MRLH%obm1e7wT z$R@_0wNU5UgYV7q`nGVm4s(prWxfqDNNG3aKFH`{j!!~w$%MYau}wc~c)zA~+z1t$hFS2ht z*`4W!Z2Hz}XB(K}Xy#03pVjjgc(WHJwpvwN97C%Ng7CYpR(z}# zxpS|qxz}905pw6B)4i@iuQ%!YXuX-O-t};_w`Q(Sav`mJm3CP#g?E!`g12DyNZ%!W znoFQ8V-(DvM2AT_&~baM7YpGG2_{T=^Vw`+ueEY+t8r4|?eV2rb-J6{PhN&hdA7=- zvCH$`Dd?QvMV__I*aJUK+gObTDesi>`lJc)U!;54L5FTeFBkkY2hU-fyQrb-4beW_ zZg{Dbky83e%2Fof8(t>m`;-#%ETVB+EbQxsPh@$%o|INLFO~5XN{%wLl5dHQ^UxOI z6EDN%V@iU;e4HddH1B1T^!|nYaRyI@4c)aMUNz0nd4~Nt1W_91C4crC}?evJIWOmy0lVVrA!52j!M&2z;m6PhF$2 zuD#|NToW%5TKBrOLF>Nw`{Vd~fBbzw-y6~kbOJ|2BWTpo1dQhBgn<3&`3VDlKDOBU zpaK*1jGxF8d{{DldAT+jQ8qv%<75l!6O{^eoNdZphr!#eJ&>W ztjdi8nhqwewuy}90{CELwZ0V@J`*2`sbjlF$& zo78xCgl1K4Cyy;`%!;FJwPbn{=pG1Tt%ujfz-PuF-D3FLLjN)(+>(&MULbF_NN-^N z%de117WOfAn7%#-m@2Zod9cjoi#G0c41}ibFg=%Z7B1jU_CCHN?C_=Y&y{@judR~j z$M!_9;K3zprzV#POSQ-{VQ7kO0JnOIFrF%0AI{9>-0BDtJvC^Vt9Dh}YT=!iEjUw( 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

J6}x}czr1+;ai6r2s-)*R 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

%d+| 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�VyR>l0RO6i}K_Bo|}PHA6IvKLfZ zUQlUyQH9;6{B2YIwkdxvsZ_n9*oP{8A1St1#j;nW;1ebLM9Dr?vQO3BK2>+yr?mT& zcAwIgjtJM)a>W`(glp)0#TrM1>t*AJa9wRuvL+>4tYnL&Ow`rIBf@X1S!tVKReVd8Y^jQGsfw>t#d5r2C#v{PR$)(8@tvw< zr>gi)Rq;I^7jDCzS2^@o74zQ|d)H*F7D#`h-Fr`l6>sYU70U-ImOVGZg6eL4 zO53NjeM-AtrJ!H2b5#n?SL{L+%Z2K`7c1GtN_MG|U8?SOsk+-{rQNKwo0ax*m4Yi2 zyIrN=4#nJmnSYBedcOIwM6s2996b`Xeu@xqZ<0M>Id%I#EDt4(WtX=6gSe&-X zWPIsKvDS>RKd;H+G@p_+XD+ycN95m%(cxIyOr~j_IpMIroU*-!739k~jxV>0f1l=r zdy-Fc!tW@4tYE?-iXSVq;-6K?tV))sWQj^)@-Y1xq*K^7pL@`@NEVufl$>!j6~}PIJ6uBF*uW z!fCcDnN`X}nyr(xSal5s-aqnwZu3d4jqx+}y zYv9JUnV@2{A%vE z$-nF+Q%Ap=?;Fj!`RLd3v&Vdpf5ezq zaj)fHKIRhFnu9*h?>T6k<>rGvAn)hp#^=12pPo}5AD>f+n;E}4=f4wNyw~`gf8_ip zCv(yhV~=v*k=v28Y1BANSKc_wWqBXu-<|g=E`8G7d9UYx0gpR4eNx=PujfxZxFct$ zZB5R<;Kk#PaxWRTC%=8%Yx&){^KqArTa)ug{@#Zhd&ukghvB*oc`bj8vm@tkhwj#9 z9QMnE*2CH};&a+F0^`?Yv>sL-e-VGLAK#u)GU0>#-U;(^FPpGiyJbRoeD8!x+?Is+ zoGl5vCftjg8UG)2?ui{anG;{jcjUKcWKLX@@kV~UHE4~u+T-GQpY0j%O>WQl9QWVJ zuji&uc|CXJl+~lJAMdqUS@h00d_RDQ=7e8qe`60^m?vinq zy3%o$VA%-$!?KQ?56k|MGo{=%_Kn0OoY(f>ilfGUQ2C_oqVeM_QxE@T!u9-(oAD~? zUXV*!%s+0%LjEqoJ(pystch~^%#0QK;WPQA;+Y*ehtK>t|Bjij*# z^?UN4ssAAVv-($Y<191ge4PKtoY#~k!SP%$62PYc#UUTsh@Jxp8Tyx zJ?Z-DsBNwvarTu5CkCw_xz?@x$o1&Tj-14!k9M~nwkQANqdVf*!8PfpqhF={>c|ON zDSz`ja&9^1ya}U^-K{kqYb(5Ip{;Ny&r-oxj>Ru`msq#p?#11QyC2zBT)pKx%N)z! z^|>6hod<8iE#kU`>opb+zs>E@j>E0Rb)oa~x7Si)?YDfdoq#(LcN20toYvOnkSFA8 zs|o}>{S7_7P)mQWx7l}scV=OMHe+gATgV@nwYs&ntfCdc@V<)*w4%EDisI^$;^M-R z`ih#`g5tu;g1Wl8;)1%Gn)-s0irT8;^76{UqT=%UqVk%uqN>vJ%KD<>x~iJG%KF-J zZa1s4mAkaUmIZtvueh&q+2U^w1$;f71Cm*7t*y1bU~iYFzoyF*3>yAK1Vu7}Io?pM zzuV*MS?KAO5gFq8uD;-!rk)yqPrEPV^Y@4d4b9L9V@r!=2`bo6-J!U-`vh{&bSso}hrSIwRdFApVNPf(;6K4U+kS_1;;`!Ej1EChb`D`*&XKSmB+-p>(>OLOT8#u`bq)JO@t?*YY*%B{pMw|53J}2Ps>y^b=s$}C(73}YknO>>_mPtnbi;`5gAw*H7 z)QFqOB5SCJ=7u2^Evk<U}-!Rb5>RJpKN@kbFi% zE~2WGJ|YXbArU&`E}lTpYXn{5?V*5q1ESFims{yay+wI7^l1zs@fDVdoRHjrV1|;Fw{J5JS^Yu41f^ zOqMB;WaCmKPRfH6*Kn3d!6K1u0L3@t4G2|JfHt8|w#Cwi%m<_Dn$_DI7|0UoWoT+* z3X94`u8NeDNY>C3qkg= zOIFiGUouee4WS4swS%A7crf+EMtJc$sse3meCxb5bela!Z8h#Pr1}^_;x4QZk2lZ^ z$;+V`V|W@WEs}l*8hnhN$fzn}MrBI5vs4dmM5IW*I5T7WjaMfckVa206(;v2$@N9IY3&@sg ze_u~~qc^n1FD)q%QNZ6lNU+4)NkY8=-o9aY4${_bX!G_8OJq);ClHP!9HiMBSm$e# z%>Xekz+58|Y#Gyd5w{BW%}cyNe_ufPm32TqM9UhCigsZ_ikEIiBSMDXBckyAgs5G# z*rr$Vl!Vvz_jtN}Z4I40{y%;O8y`vdf-ewq-|d#zvAdh<$ELvFz9YLZXs=~C|z zv3Lp9eH|U%uz`TLq?w?u0<}W*A=Zb z-f=_-%&h{g#?K3sxh!7^@kBJw!W{O~5Snl3B#{_zFUI#QG{&%Qp?5<_$Ro-{vv?dr zQ8fCaJ(6#{Ku=#+sD=#kwbMEnwNr$4cW|F6$wATZRSgFWYpl%j2TC< zh$B`@Ar-P0D-m8ghd1}lm@vSNsD`!LO^;Z=umc&#rbmomSWM&C^noc1i!_N0$MuBWeCm{?4XUz(*VE4U z*BePiQ&LuNtk4cA6Jp9EmYl(JEHSpS5JyK|7~8iH*Z1|b@u!8(a-aunmgWZH1-_oO z-u4C9I1BylUIYvKy1G28y98|z{^?82EAvs!tEPY$A%>qn?B#emP1Aqa*byVL;M%J7 z*c_&&xs8FbFor_3(hKQgyzMfd#Du1}uhg6Bfnm*WdFdbIf#7X@0p^23i~GENGS(2L z1+k0N@JISy;BWJEaY45jU>HT;&4tl93PY+TJYyy;fp8$R$1{uogk)2=vl3TJFxZ-U zx)?7+NR6EI1?3Iotwk~nTT)gWZ-B7UxR^`-({5NWlOw$L6N0K zf~5uH7tu5f6iTjQN}U6L$~= zhQ9-)M+n1D9#+a(2o%OEHeaX+1@JyHKO+FVxm~x(c-}?>aAk zL>nP&xIxw%_?P(tj%Z}G~~jT zGvz+>FQv`buI7%7Fg;!V&hW@gv=Gv!H&m-x0jTw13X9TfMlocVDr>het+_izDYg-V zZfGZiC`OM`WVGK!T4SJ34kC`Fi1jg!;ctVS2Bq4<&DIE^QIHVL_x8*Fb&Eu%f80rnb1Gq_m{2qN1{}u)MCQwxYVUu%NuYlw+Ub zehiAmJOQs%3_AwhudMh$ZID)4Qd(bJUR+mDQ(9e8P+3x3Q&`2oq^zc>w4k7>tg4`} zqN=8_zOJCEq`tnQu&Ab@yt<;kq^zW-vaYzen){2ErKr_N$Y2ZKRAO$!4%F`u7hc;qRaM}p2S#p%iAtHlCffSV(aW6wWlhRuRFeVId z;dfx_+Wk!Jdu1yVtP8ez#G0NF!O-elY*gH0QId-_M&Q!m7FDmc#~VTtE|=1WESKWp z28!T;-gjY%*;ud)CtC$7dPFlOEKz(=q80^w>%>Htk4cfxn&?7YqLo!v)iaDODXl7~ zt*oSYs%ok$N{UM>ORB2tit5S=>&nY&>T1eLOG>mw zUeDS^Oh7Y{)=i@*mY~a!8aEy+!{?E{KnO!-kbI$^)Db~*Kc*nlZ;{auWEoQ?)Cdd_ z;x)QgN$6hrE6Xh<4mNCw3;PnDeyhacWl)JT!&a!U2c8ce6r2*rwdhVTD46*ZWlj_q zgiMNb8&uloCE*5K+|D#_O0nNVI>QczJ;TU=RM zTT@+FUQ<_BSyoqUutuzOb^Sw5GPKrm(WElo^Yf!kY358i%@i zW+@6Q3Jc3B3(BiXYN`tB>T600SlF*Esi>-ElA^q-w!WrRYpg9*ISd;%hr_;FA-|Qw zco~$#X4nc9_P{xe_Z}MKfgD}nU(ft39ka+!5t*5PP?_E#>ky)Hl$qs763P*Os|%}3 zit4M%iz_P%3+jqWtBPyO%L{1I%d1O^ic5;C*#=QZ7S+&d7uHr)R8$leSJ1%LRh5-h zR~D5?BhY9PY8eA9>1ZRSGEFQOMN7T1>4@~Vz}x9*>nBuEab?*7TKY2eI$*=Tj=%a&E=6G4h@U=||k8Egz59BS<@(KGhW;iCBk((2svxqqqBL&9bT_mWa zloW}sv8)yHTX~6>L3zpbFhww|8N6mG<}ZVWsG&y;qfWwKjQohmhZs*#5o3m+v_clp zr7iVnjpu><*7M+H(DQH|yUYnifEie?9BrC8%3Bgyh)x=|%uAaqIr2?c#!4l^S<;CN zhx}Fo@iHiZT*poz3PuHeq)1F<%TBRDEC-0Op)~Moy&;dUD>zGLQ%#Mmxcr$@BL&9f zahtcHR%>W(t*=_pTqj7&lBIQ0zhG{?3?cs3ELl*mH3aLLz~84O1JMxQ`sF8nYbC z#xrR5HZ>dRH-ucZnzJC#n&xJWF>1SieQ;rmHm~Z)s^*#{4U1Z2h^FS{TBD~;{K4w( z^R~8X3q0Mc+dbII-Q6Bd&O?iJs2b5~$skh15W&A*OhOoPk?vS>DH{kXQJYL-bz7UvOYygJ zAW!GC8)EZL;U2L)s=5`DN1}rrcOKG-oNb*5Cov zVs)=d+}eyr zXzW50;0D2?s?pO!DQGteaYMUE$54@cLZk5;rJgP&=Z_H?Q4qMgzr*B$9Pj6~4t8T(tgZZ_teO-+q)U(BsGpG^chNjEh1F3o1+gpunU&?TdR0SAiuJaC-HT4Yg z60vhcV{dJE7m3zu>?YC7wm3#}J2hfSz%<|3#~NM^2!>nbsWI%-sivJOI=ZQ5!)yMX zHEU{BJB3D?$1&rJyseDDw6~@je~s{>(_G@^rMJm3sd#(h%IG`$*sWknM3&JO4QyC3 zvK7B(-o;kRJ=!q>$vqch6IBeIVF?t~QkO!(qr3tCB5ux&40%bEyt$iK%hbn0zcI90 z=oLE?n2C_vBn<@djwrgv=N`(>%z1x!yo)liWWWjxVZ^gcY&MNLV+dh=j%RcG4#F z2I~D{hjUmXvcT9uBOl(RjN83|F3}eo%}+zH+3V?27t*Gz>k*9+#oHGgblpHHm;1@X z9%OZqG4kM3Ba;%OHj6IDD}+qqF=xnqkp@-X{Qr+c7K`YJ3~{Y@bzf&VZk}M!wc({6 zGq@|l%b;udkPF00TG)pXXqhL_6P6HdjJIywf(<=w ztZ=k5fMQO9{1RLgTy{D0GF6=kUpA1@Y~@0M`C+V8OYfAJIbuftVssJN+T zsARp|2qt&RnRgb8%i)b%12GMen)?UEEJSma;JkjT#|# zaLJ26n25&~CErUY*=DxI0||(skxw(!duzLK+N50*mRF#z%hSuo>sTwzG_|7RGxYR0 zVJb{&vEptfl)BUxqUB`}BFq$7%ZJKjQzI*)%6g+-QoE(qGcb=6mP>O-Mu?$|O|9-G zOBtOYnG+#x>I?PuVfqXbGcSOjD3xfphf#@y)>7ca?ZRe;c`2VEJemkA)$qa`cVO3T z=oiC;0R={6y+>f!eC&-9iG{@!uXV{UC zVNLTc!yd&JQn7`hAwp&hn`H9oRKy@=z`rb+%y)#F>Uy!&j;n^CSeRJi7aMCLR|B=W zp0+@LuL@ucwq0EW zBU=}&Ylbc6j!79;8>hsWy%6?jH?|eB);4)`Y_QO*kmiO>Dy5hCQdMrKkV7@>b&%@_ z%RJ%Mwq0wNhSL&h(za_IU7k)F&c5y{u>*<7FummShz%6&-VI2Mq}Tfdk6};BMNd|g z*a9LpYY=$AXd5tM!qG%Z=uRRp<;bC)c{MM#8g~!dIlT8CrkQ;0+L3;M8;C{GM{=8~d? z12aj{I%Av^o@I&FM+~u}l@0CDvY5lEXm84zj8+Z2iUW9xG%};3Fs!g>dDt!*Vg*Ed z4EIjanjuYpw1?O&Z?r$7brQS$qjfaVRJB0AxuHL*a5Z;_dKa-;%#Q6Cp~d0HWou~A zntPeLjE-F_EeB((!Ub%2AB;vsi+F%In8RyZD=pgSTbnau2l8SjL5z@_#WNfrHtK(i zf0#Q-a|+`sMjB*CJ-j|VK{8B8a|+1Vr5NqUXc{=wBKBXzQ1`@^i$UHnDmi8xM#mu! zF)bf`pT<79qtWO^qtyesx>U?QMtd-u_GpFCXAG+r^LE238+ybcLAG=<9_)*GTX7(Z z^-?;h=sSm}Z=y9um7}E&`WY3jqfHk!cC^1bj>*KfD~t-+FF3R)Z>9hf|7 zVBbJ&-;5K)`B=FpEVd6}QhDrV7+4zE=M>e$g5 zHQ_fr$?pin4sX2819+%2mH=aiZeHUL80WU5o~l0JBR{(OV+W*&Fh?NwmYFYc7>}YV zi`OE?QPHJW^z&7smx`?xfkoYj8CDvsa`_;(UIaFh8Cy^5#WD1lQ7>cfEjxc>BpBl@ zw!)k-mWhgfPBE^HmYU<=*h;gLi>+j}%NtuGhMBQ7qGH9?$Zs6PR?#RKrvhWEjS3fA zH&CTnv|uDWj4wt>tV%{_j&Yt(?s|zTn@h#<)Hd=UI+)xm6I)f+6)V6JhSr>Kj*dwT zW1^+Zw?~fTqdl~E89~Mj+7OhR*oOCD4AUr=v2JY435llJ70W&^~t_j#-2`ZaU#(Km|oHi{U@r4 zQU|9Q8~fLbg%wdzV#Xpi+s0HFqW~;~^_;zK?&7RUbi!$j%wxt;Nia*TF~$&+P|=|c z>p_&W*m}{=#MTVncN-n^0&h=etUJmnnc>`91DnLGv) zEml39rz={?B%YX}rmDr#M!%=dP0mzqg8W5v83i}qnYWVI*PYf z9cb}%HuS{yzBCXcW+TPT!5AuG07WN7d}|t4-gh@z^6VYLX8Z8#ruSvHOpQWUb`bmmMrgfI%e}xhEvN)saPqh7i+LF?qiO_jQ1bYhv?PB zWKFElbWqVr#L5-J{Fpihx?(ycrjGqRY$YKjF{1PbyzI$hrH4F?&3Af? z`E9vBAo?ckM-kgqq7`JeTzwaYLo9s_+c%;^HH!_4^3xGfbyzjz2kyZo_CrhR?-F#)e%Z zM(x9RTjF2;KllpU1V)|w-@?#>o5B7!|6=$q=I~?WLbX3c6D_;i7+Uc)zTtE&{$W*B z?d|3yd5k#K0;M^|i{ZtX_Z6c}riEkZ<<}PF12uJ2_4s@GyZJa5)rI4QZ0(IMoHV9w z9E@OyAm&wLcrZUmCVQb6Y8jq|Q11qcWt*{seK@~rzA{EU!m<>tCxdeN$+YN{s?gHP ziV;QBG-M1v6p#5Ffx=wwjG;BQNe`nWsIgUs9BCx~*&HZJc#LSMA~B@qrZmwEay+4h z;adz(1eJ3QF;ooNsmdXLo1ar^QSFczy~hw621YD}_$p_(oQQ)dqE!hGwPN^ZN(3L~ zXefqW&g0>OF`w$YhVynH4@{MC035qEMqtARkUw8ITb@}?ERG+KBKkf(=8C=lxVH!7}P?8Y}SYINb|tn#lC=;HXFu^xjAwe zt=VZuC&8E|jh53K2dc!;&uA4L0sC%as;D%v6*M8S0~lRe^i61~rKJ|Fk!LQ&6quMh z9p0On^Ndz~V(Lbgwdlwq3SzWU%<djsNit^DGkO>_2?TLGyhe5kzqI=EetB6!!?CZIL6eUNItx z4s4`(ST#$^(P5hSh!H#4o2;eE+%(9scdkixqmS}ZzR#`nW$&6Qhe z0!N2sKSYNwMx4!@28ksn^^rz2HZSueAvxTQj@(#S6Fa2E=_TU}BGJA?LpgNPa5%qo zs?ib1W$~Dr@JEuO!YFOoJHbX@<%ezYG<%8mE^B z!nGOS?jI1)O$PaFI#Vm29u8pgT`ONVHkZcg0;k#qtLkQsDabc0wZTW~8bo7X)5Wg2 z&{UD{TCHFHG3+Yi{4gUkNz6J$-zP_F@~Fp9S*yo5Ri-?NGY#TG3~Iy}Plg&KXzhqp ziw#Vok(Yjr-L1m6m=KU6vmOqT$rzN6r2$_=U`dV7#q~=r5@gJXX-mY!qG$-;> z93dLmpsuxrPTm!DaJ`L7@44Y-*Y*Gjh_rFa{}GJX`IC=1rAe%S)C^orfW^5IgumxUUaZgSlpLTYX<~%JwYaw z_^P3g4MK~=W@75K+*GXjjDuF9Zpk5>OxfTw5Hf8;M0~P_5kym9;G_g;jJOalN=`zE zlM*t5fh(ai&AhdwXAZcfTkn1EOBFsd_*rZe`l8 z1441DD4`Ldm@kwm7L$PTag0mx0}AwGHGP4u{%Y|_8?)Gv09LT3%8eo#n~M9o`0*_H z#A48BoZ~Q_LLI~~-t@qwQMqMxG=hpWN1gPLp`xXYEH*_;+l(*X42jds^6;*K2yH~( z$Iyzk!wAppu;I&uOyu{N4Tap(7Wu542#oOGfSD3`-OQ1@fv0Z`4sg}F@YM~OiPD%b z^;B)h|xBFzz(wbWi&syW2KSz+S`Iw<7EZ+sXZB@6j`!V2TF7!d;H(+tUH9p{ix z^Gfu_O&o`ji3p#4;g!gr0a4eo+2SFXDVy3Lid(ywyE6@p@Yf=icstDYeX7ygi8XEW z<7HE0DrZeKntXL1SwIFI!!b(7U=dF+B%GO&A=2=qIzLoG&Z(QI;52@;*-CDNX7V(Ieq<%G5f)zoHb0c4 z{6@6VQcb^y8KcxBLpG?wHi(oD38wr9!?zWgZR{j8KUxvK82BKKur*An_)RQ12dpI0 z#+Ii5OfMbO9r0Tz5uw5#w~=Q_BIL#|Y_(Ax2JWCQ9?4)C)% z;(#tQbCC4nUzwplEX}PNf3lUFd~u+F)|`MB9mmcFhI>|&wJX_oc6ef z{Sk}#4SU?bvd@Q^f4mXNW>q&diz;TkZsy-^Zf)96k_#>Wv_WvVVH2l zW{ksXnE>MUqPSNNS%^RqkAcWfCDtWHr}C#0Qw!kBjVc3;i4dD!L(HPybyPM@PzCrx zRFgW?{{dOJ)OBf%kD6Vh_=ZhBY?MIi5w`Hs+bdjb7mMMNf3$wfxf%DFe(lOYj{6v9 zW1$9$4zhgJz}S$}T?0U*dZ^vNv3p`-5Rp!*8%$(-7=u%)I4$W@>;qANflWkT)ZYV} z3-5tXcV0Yo>={>1>4*`MG^#EgbPLrZUYu)+gI0Ww&AQSipawt};H}ul+~f-YilZeE zdFv!HQ$^D-suj#`j3pxvknYB>(=SaoI}%6!c|vq9+p69_qYwg>c_*aLfC zjDfia!`XTdY7dNd?7^NbP~AP~k# z$rIrmTF6`uS9?6qn-X%_d{bvahbnA+;$QHMvKGKGf#pTwp(5EpiQq9J&aF-eN3Dm@ znb*aJ8e4TnMr2Z6mdr2{w&B!CxS+{Zl!(2FUt4w|K@K7qyxIb?VZP(b+Sq6Jx3>rI zk7xAkHF#1ku)}ru%ZQN@mJPnktyc+`@Q-)9_UqLu+Dt_<1@BM| z6G$7-Vpafjhp8cS1{gx#Sis8Y@MN*Rz49m9;tcEFBqBN6F&H(5?4ljRr60#rrRvpm z&8jAtP7kfJb>0>!pn>7K8^v9MMoqg362*Ikh&U^4#~o0wfUr>&1GJ|US9KUYzQ*QR zUF4y5;L&>Sr{)G7F2{Fz=7|SrF5;DOH7@Vgt7#K~#~ zW7AuKnpXm+F=t&Pq~{X3WZ|HB$Z-$~z$V}x84&b)`IaODi54jA9%1ELFc+JLdN~40 zw*_8z8p2((wE3Sy_Xm&`?r@7kP8;Be$$1$Nl*kYjuK^Lc(j!xZ!DewRKu^yB!19hd zqYzG1X0GL!4-Z zCiHAwRir9W7qejJp#ZY^3KNfoc?<>p>CZlyO!_w!_`JsR^;1zp2kfw94$?Q3Pv+pxp$cw-dBca+t6b$RpV{$C^p;0F4 zLh*DT&%D6te9dVe9nNFhTR5s*G%+d)MVY>Gx!2PhBH%!9b-_xoQ>^Al1S?f><^*d+ zp+W6ji7 zUlAAWLPyX+i3lBCS1h_k@Esr$#Fo~nW|3MiEWsaoPNR$E4f5n#41?LsJ9iDirz{|2 zQC_Y&-Z5@UP&NU(F@_XY@weY~=wHSMnq6dzsC?l`Y=AxK{2q z2e7Rn2CTFT+uCd*n;*dt>msye3^V7L=I1we(Jxd>!okSSxDv3%nRR(|Ljv8P-V& zcL~aDf|w%GS2+tZBJ_VQzyh)>Nc53&6F{|0%&-{B2%e867{@Oq%*+}NTk;&k(iCY7 zpHR5o1I} zP1!JWDT%htH)|more%uC%FO#P4kE}+eV?ji-11W8ahdgGF`VCmvXv#ki7Y6i;PnR( zt;1+$8=PD4R*y6i1ZL4IaC)bmCybnLkd&wy1ir6535DP73yW@M~`+OGK5c zB-3=0p-}N>pb$6&)_;An(BgL~_&=t*aI5skG$auk%>7kKOj=ZcomK+q8||zLp!9r3 z_voQPu!Oj|JHNYnv2i{*9ih+zXW_9=DJx_pGhczd>Wwu*votqTTwA){vb5Yj*CMoHDeEmv;W?2)xcX?HJ9Yr zv{3M3!aHI^$FN4I=Kg1};2sD}YQMh17e#(B&HYa{;6YqnwOGH2j=zCodht#H+AVN>d?1HyFb&`{5eYU0JflY9;Zfh0LCaAyFE-XHq5&B00{?yGCi4mVwhZ`=<^PydRY$!{cheabbQhP z1P$uQ_Ha4U(bhG2fVSwAKNNz%LXC-pc|0`&;^mIs!I&mFA=!78L&O6p*_k6GD@+d9 z#J}XzB_r5v9|gt7^?B};T!~9^PM<39AY03ZK0?By&aog!Uj@L9=>TPNldIksYBN$_D2&2FQ0Qo9KYp`Zp> zEfA%>C%SDVq&1}Ahm>o-eF^46*4>mIGR6(O!kI$n2<*B z^!Uvy#bVj%o>4`Y05MR@C>Dt(zw<@7Kw-$=B?`Kq7p&K*4rkG%8@xfHO~P=lmAr;A zt!h9;;n*)tVQ|F1e)&kJ+ED+}#?ZD30SZ6RJFHD3h>oV6?mUj<;p~k^K{}?u*`dxd zzuZK+r^{;`@3XV3BrH-hIe9TQfL#zfk{W}#s@L?PlM8)yrWsHRy8^#O zex7`It~eg$5`AooDTI`fmoN(~(a>nxt0|1r(1ih9B7il!5=vGIRoM@Gx z06MvRhgP9P@_|wb=8`D@Y@NHX7ylABtP2$myFz_maORg-CGaAl;Fq&4)Xh%V2C$lA zDqg`Sg)=JGe;u?|XatmC*TZCO=iMrvY++h>M!ti6(UC~UnbptxqjQvNJd#fhnF4Bf z@`m0VmG{}Dei#FWwJW@ig^NcdvlH5N;M8Mvmk`FGU5d~wpajqny7w#0bsJF0*y0JJ z10C#s!%~WSK*4bm8fJI}gwl_<+v!~aK5T?({P9N)HK^0(>y3;7*%SeVT{c*^7C# zz}B=i0KZ4HkR}D|z$IVDXwWOMc_n>o=QjH8x0C|0l4YwV2q~$DBzqFNaIW@TP3LI1 z(V`fjTDzw;7cIn8{nn!6lENCG_l?TJoW&=^0yL-1oC%I3%Ty1%0AS>3jy|n+(5GKt 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%0DJGY~;wBaIm&!^~ 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 M`(Nk!t4)Fb4{n+(L;wH) literal 0 HcmV?d00001 diff --git a/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml b/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml new file mode 100644 index 00000000000..c90933c5bd2 --- /dev/null +++ b/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml @@ -0,0 +1,27946 @@ + + + + NLog + + + +

+ 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. + + Type of custom Logger wrapper. + 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. + + + + 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) + + + + Support implementation of + + + + + + + + + + + + + + + + + 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 + + + + + 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. + + + + + + + + + + + + + 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. + + + + 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. + + + EventHandler will only be triggered for events, where severity matches the configured . + + Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. + + + + + 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. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Marks the class as containing condition methods. + + + + + 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. + + + + + + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + 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). + + + + + 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 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. + + + + Condition message expression (represented by the exception keyword). + + + + + + + + Evaluates the current . + + Evaluation context. + The object. + + + + Base class for representing nodes in condition expression trees. + + Documentation on NLog Wiki + + + + 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. + + + + + 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. + + + + + + + Evaluates the expression by rendering the formatted output from + the + + Evaluation context. + The output rendered from the layout. + + + + Condition level expression (represented by the level keyword). + + + + + + + + Evaluates to the current log level. + + Evaluation context. + 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. + + + + + + + Evaluates the expression. + + Evaluation context. Ignored. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + 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. + + + + + Gets the method parameters + + + + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + + + + + + + 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. + + + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + 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. + + + + + + + + + + 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 comparison, 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 comparison. + + + 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 + + + + + + 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. + + + + + 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. + + + + Implementors must have the [ThreadAgnostic] attribute + + 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. + + + + + Initializes a new instance of the class. + + Assembly that have been loaded + + + + 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. + + + + Gets or sets the JSON serializer to use with + + + + + Gets or sets the string serializer to use with + + + + + 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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. + The assembly name for the types. + The item name prefix. + + + + + + + + + + + + + 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.). + + + + + Include context properties + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. + + + + + 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 this configuration element + + + + + Configuration Key/Value Pairs + + + + + Child configuration elements + + + + + 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 install/uninstall. + + 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 LoggingRules for LoggingConfiguration + + + + + LoggingRule being built + + + + + Interface for fluent setup of target for LoggingRule + + + + + LoggingConfiguration being built + + + + + LogFactory under configuration + + + + + Collection of targets that should be written to + + + + + 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 LoggingConfiguration for LogFactory + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + 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. + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets the variables defined in the configuration or assigned from API + + Name is case insensitive. + + + + 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. + + + + + Inserts NLog Config Variable without overriding NLog Config Variable assigned from API + + + + + Lookup NLog Config Variable Layout + + + + + 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 object. + + rule object to add + + + + 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. + + + + Lookup the logging rule with matching + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule with matching + + 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. + + + + + Allow this new configuration to capture state from the old configuration + + Old config that is about to be replaced + Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config + + + + 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. + + + + + 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 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 + + + Directory where the NLog-config-file was loaded from + + + + 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. + + + + Config element that's validated and having extra context + + + + + Explicit cast because NET35 doesn't support covariance. + + + + + 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 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 following rules when this one matches. + + + + + Gets or sets the whether to quit processing any following rules when lower severity and this one matches. + + + Loggers matching will be restricted to specified minimum level for following rules. + + + + + 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 + + + + + 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 be 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. + + + + + Checks whether the 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. + + + + + 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 assembly name for the type. + The item name prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the type. + + The type to register. + The assembly name for the type. + 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 assembly name for the method. + The item name prefix. + + + + 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 type-alias for an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The type-alias for use in NLog configuration. + + + + Gets the name of the type-alias + + + + + 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. + + + + + Failed to resolve the interface of service type + + + + + Typed we tried to resolve + + + + + Initializes a new instance of the class. + + + + + 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. + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + 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. + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + Singleton instance of the serializer. + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Interface to register available configuration objects type + + + + + Registers instance of singleton object for use in NLog + + Type of service + Instance of service + + + + Gets the service object of the specified type. + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Registers singleton-object as implementation of specific interface. + + + If the same single-object implements multiple interfaces then it must be registered for each interface + + Type of interface + The repo + Singleton object to use for override + + + + Registers the string serializer to use with + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Initializes a new instance of the class. + + + + + Registered service type in the service repository + + + + + Initializes a new instance of the class. + + Type of service that have been registered + + + + Type of service-interface that has been registered + + + + + 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. + + + + + No Stack trace needs to be captured. + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers + + + + + Capture also filenames and linenumbers + + + + + Capture the location of the call + + + + + Capture the class name for location of the call + + + + + Stack trace should be captured. This option won't add the filenames and linenumbers. + + + + + Stack trace should be captured including filenames and linenumbers. + + + + + 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. + + NLog configuration as XML string. + 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. + + + + 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 + + + + + + + + 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. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + 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. + + + + + 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. + + + + 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. + + + + 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. + + + + 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. + + + + stores state in the async thread execution context. All LogEvents created + within a scope can include the scope state in the target output. The logical context scope supports + both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) + + + (MDLC), (MDC), (NDLC) + and (NDC) have been deprecated and replaced by . + + .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext + + + + + Pushes new state on the logical context scope stack together with provided properties + + Value to added to the scope stack + Properties being added to the scope dictionary + A disposable object that pops the nested scope state on dispose (including properties). + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Updates the logical scope context with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + Scope dictionary keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + Skips casting of to check for scope-properties + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Clears all the entire logical context scope, and removes any properties and nested-states + + + + + Retrieves all properties stored within the logical context scopes + + Collection of all properties + + + + Lookup single property stored within the logical context scopes + + Name of property + When this method returns, contains the value associated with the specified key + Returns true when value is found with the specified key + Scope dictionary keys are case-insensitive + + + + Retrieves all nested states inside the logical context scope stack + + Array of nested state objects. + + + + Peeks the top value from the logical context scope stack + + Value from the top of the stack. + + + + Peeks the inner state (newest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration + + Scope Duration Time + + + + Special bookmark that can restore original parent, after scopes has been collapsed + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language. + + Documentation on NLog Wiki + + + + Gets or sets the condition expression. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + 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 + + + + + + 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. + + + + Extensions for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. When not + for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + for chaining calls. + + + + Starts building a log event at the Exception level. + + The logger to write the log event to. + The exception information of the logging event. + The for the log event. Defaults to when not specified. + for chaining calls. + + + + 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. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing 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. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + A logger implementation that will handle the message. + 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. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + 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 logger implementation that will handle the message. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A logger implementation that will handle the message. + 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 logger implementation that will handle the message. + A containing format items. + Arguments 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 logger implementation that will handle the message. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments 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 logger implementation that will handle the message. + A containing one format item. + The 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 logger implementation that will handle the message. + 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. + The type of the third argument. + A logger implementation that will handle the message. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + 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. + + + + Interface for fakeable of the current AppDomain. + + + + + 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). + + + + + Process exit event. + + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format a log message + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + + + 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 value without stringify + + + Implementors must has the [ThreadAgnostic] attribute + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders 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) + + + Implementors must not have the [AppDomainFixedOutput] attribute + + + + + 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. + + + + + 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. + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + 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. + + + + 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 + + + + + Has property been captured from message-template ? + + + + + The properties of the logEvent + + + + + The properties extracted from the message-template + + + + + Wraps the list of message-template-parameters as IDictionary-interface + + Message-template-parameters + + + + Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Special property-key for lookup without being case-sensitive + + + + + Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase + Enables case-insensitive lookup using + + + + + 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 + + + + 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 Object context of the exception. + Target Method 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. + + + + FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" + + + + + Object construction helper. + + + + + 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. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this file-appender instance. + + + + + Closes this file-appender 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. + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class which creates objects. + + + + + + + + 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. + + + + 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. + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + Factory class. + + + + + + + + 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? + + + + + 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. + + + + 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 + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + + + + + The MessageFormatter delegate + + + + + 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 + + + + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + The String Builder destination. + Parameters for the holes. + + + + Detects the platform the NLog is running on. + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + + + + + 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' + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + 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. + The overflow action when reaching maximum queue size. + The maximum message 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 the on completion. + + 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. + + + + + Initializes resources for the protocol specific implementation. + + + + + Closes resources for the protocol specific implementation. + + The continuation. + + + + Performs the flush and invokes the on completion. + + The continuation. + + + + Sends the payload using the protocol specific implementation. + + 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. + + + + Parses the URI into an IP 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://. + + + + 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. + + + + 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 IP address. + Implementation of to use. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + 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) + + + + + 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) + + + + + 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 + + + + + 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. + + + + + 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 + + + + Object Path to check + + + + + Converts object into a List of property-names and -values using reflection + + + + + Try get value from , using , and set into + + + + + 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 + + + + + + + + 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) + + + + + 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. + + + + Optimized delegate for calling a constructor + + Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees + + Constructor to optimize + Optimized delegate for invoking the constructor + + + + 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. + + + + + 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 + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state that combines ScopeContext MDLC + NDLC for + + + + + Immutable state for ScopeContext Mapped Context (MDLC) + + + + + Immutable state for ScopeContext Nested State (NDLC) + + + + + Immutable state for ScopeContext Single Property (MDLC) + + + + + Immutable state for ScopeContext Multiple Properties (MDLC) + + + + + Immutable state for ScopeContext handling legacy MDLC + NDLC operations + + + + + + + + + + + + + + Collection of targets that should be written to + + + + + 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. + + + + 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) + + + + 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 + + + + + + + + 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 + NLog string.Format interface + + + + 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Replace string with + + + + + + The same reference of nothing has been replaced. + + + Concatenates all the elements of a string array, using the specified separator between each element. + The string to use as a separator. is included in the returned string only if has more than one element. + An collection that contains the elements to concatenate. + A string that consists of the elements in delimited by the string. If is an empty array, the method returns . + + is . + + + + 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. + + + + + 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. + + + + 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. + + + + Default action if none of the filters match. + + + + + Serves as a hash function for a particular type. + + + + + 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. + + + + 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. + + + + + 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 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 + + + + + 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 AppDomain.Id, the second the second the AppDomain.FriendlyName + 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. + + + + + 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. + + + + + + The default value to render if the Version is not available + + + + + + 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. + + + + + + + + + + + + + + + Gets the assembly specified by , or entry assembly otherwise + + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets the product version, extracted from the additional version information. + + + + + Thread identity information (username). + + + + + 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. + + + + + + + + + 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. + + + + + 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) + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + 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. + + + + + + + + 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. + + + + Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + 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 + + + + + + + + + + + + The call site (class name, method name and source information). + + + + + 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 + + + + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + + 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 or sets whether to render StackFrames in reverse order + + + + + + + + + + + + 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 whether to include the contents of the properties-dictionary. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Enables capture of ScopeContext-properties from active thread context + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 + + + + + + Gets or sets whether to perform case-sensitive property-name lookup + + + + + + + + Render a Global Diagnostics Context item. 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. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + 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. + + + + + + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + 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. + + + + + + + + + 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 nested states from like a callstack + + + + + Gets or sets the indent token. + + + + + + + + + Renders the nested states from like a callstack + + + + + 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. + + + + + + Gets or sets how to format each nested state. Ex. like JSON = @ + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Renders specified property-item from + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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). + + When Format has not been specified, then it will render TimeSpan.TotalMilliseconds + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + 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. + + + + + + + + + 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 sequence ID + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + 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. + + + + + + + + + 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 + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + DB null for a database + + + + + + + + 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. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the base directory. + + + + + + + + + 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. + + + + + + + + + The directory where NLog.dll is located. + + + + + 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. + + + + + + + + + + + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + System special folder path from + + + + + Initializes a new instance of the class. + + + + + 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. + + + + + + + + + + + + The OS dependent directory separator + + + + + + + + Render information of + for the exception passed to the logger call + + + + + Gets or sets the key to search the exception Data for + + + + + + Gets or sets whether to render innermost Exception from + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + 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 or sets whether to collapse exception tree using + + + + + + 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. + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + + + + 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. + + This public property will be removed in NLog 5. + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + Render the value for this log event + + The logging event. + The value. + + + + 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. + + + + 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. + + + + + + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Value formatter + + + + + + + + Renders 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. + + + + + 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. + + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a + + 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. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + The layout-renderer type-alias for use in NLog configuration - 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. + + The layout-renderer type-alias for use in NLog configuration - 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. + + Renderer with callback func + + + + Resolves the interface service-type from the service-repository + + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + 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. + + + + + + + + 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. + + + + + + + + + A string literal with a fixed raw value + + + + + Initializes a new instance of the class. + + The literal text value. + + Fixed raw value + This is used by the layout compiler. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + + + + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + 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. + + + + + + + + + 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. + + + + + + + + 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) + + + + + + + + + + + + + + + The machine name that the process is running on. + + + + + + + + + + + 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 + + + + + + + + + A newline literal. + + + + + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + Render a NLog Configuration variable assigned from API or loaded from config-file + + + + + 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 + + + + + Gets the configuration variable layout matching the configured Name + + Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) + + + + + + + Try lookup the configuration variable layout matching the configured Name + + + + + + + + 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. + + + + 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 + + + + + + + + + + + + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + 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. + + + + + Gets or sets whether output should be encoded with Json-string escaping. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + 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. + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:tolower} + + + + + + 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. + + + + + + + + + + + + Lookup property-value from source object based on + + Could resolve property-value? + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + If is not found, print this layout. + + + + + + + + + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + If is not found, print this layout. + + + + + + + + + + + + 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. + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + + 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. + + + + + 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} + + + + + 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. + + + + + 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] + + + + + 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. + + + + + Same as -property, so it can be used as ambient property. + + + ${level:toupper} + + + + + + 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. + + + + + + + + + + + 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. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + + + + 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 + + + + + + + + + + + + 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. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Gets or sets whether output should be encoded with Xml-string escaping. + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + + + + + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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'). + + + + + + + + + + + + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + + + + + + + + + + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + A specialized layout that renders LogEvent as JSON-Array + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Gets the array of items to include in JSON-Array + + + + + + 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 {} + + + + + + + + + + + + + + + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log event (as JSON) + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets whether to include the contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + 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 exclude null/empty 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 \/ + + + If not set explicitly then the value of the parent will be used as default. + + + + + + + + + + + + + + + + + + + + + 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 formatted output using the log event as context. + + Inside a , is preferred for performance reasons. + The logging event. + The formatted output as string. + + + + Optimized version of that works best when + override of is available. + + The logging event. + Appends the formatted output to target + + + + Optimized version of that works best when + override of is available. + + The logging event. + 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. + The rendered layout. + + + + Renders formatted output using the log event as context. + + The logging event. + Appends the formatted output to target + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders formatted output using the log event as context. + + The logging event. + The formatted output. + + + + 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 + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur + + + + Marks class as Layout and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The Layout type-alias for use in NLog configuration. + + + + 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 independent 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + 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 whether to include log4j:NDC in output from nested context. + + + + + + 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 log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets whether the log4j:throwable xml-element should be written as CDATA + + + + + + 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. + + + + + + + + + + + + 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. + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + + + + + + + + + + + + + + + + + + Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) + + + + + + Is fixed value? + + + + + Fixed value + + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + + + + Initializes a new instance of the class. + + Dynamic NLog Layout + Format used for parsing string-value into result value type + Culture used for parsing string-value into result value type + + + + Initializes a new instance of the class. + + Fixed value + + + + Render Value + + Log event for rendering + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Renders the value and converts the value into string format + + + Only to implement abstract method from , and only used when calling + + + + + + + + + + + + + + + + + + + + + + + Implements Equals using + + + + + + + + Converts a given value to a . + + Text to be converted. + + + + Converts a given text to a . + + Text to be converted. + + + + Implements the operator == using + + + + + Implements the operator != using + + + + + Provides access to untyped value without knowing underlying generic type + + + + + Typed Value that is easily configured from NLog.config file + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout that will render the result value + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets the fallback value should be null (instead of default value of ) when result value is not available + + + + + + Gets or sets format used for parsing parameter string-value for type-conversion + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + 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. + + + + + + Gets or sets the result value type, for conversion of layout rendering output + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value + + + + + + 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 + + + + + + Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value + + + + + + 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 the option to include all properties from the log event (as XML) + + + + + + Gets or sets whether to include the 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 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 + + + + + + + + + + + + + + + write attribute, only if is not empty + + + + + rendered + + + + + + + A specialized layout that renders XML-formatted events. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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. + + + + + + Extensions for NLog . + + + + + Renders the logevent into a result-value by using the provided layout + + Inside a , is preferred for performance reasons. + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for + + + + The logger to write the log event to + + + + + Logging event that will be written + + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + + + + Sets the information of the logging event. + + The exception information of the logging event. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + + + + Sets the log message on the logging event. + + A to be written. + + + + Sets the log message and parameters for formatting for the logging event. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + A containing format items. + The first argument to format. + The second argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing format items. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Sets the log message and parameters for formatting on the logging event. + + A containing format items. + Arguments to format. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the log event to the underlying logger. + + The class of the caller to the method. This is captured by the NLog engine when necessary + 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. + + The log level. Optional but when assigned to then it will discard the LogEvent. + 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. + + Type of custom Logger wrapper. + + + + 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. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message including parameter placeholders. + Already parsed message template parameters. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + Log message. + List of event-properties + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Override default Logger name. Default is used when null + 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 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 + + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Override default Logger name. Default is used when null + 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 + + + + + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + Repository of interfaces used by NLog to allow override for dependency injection + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. + 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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 notification is called. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + Dispose all targets, and shutdown logging. + + + + + 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 candidates 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. + + + + + 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. + + + + + + + Loops through all cached loggers and removes dangling loggers that have been garbage collected. + + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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 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. + + + + 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) + + With property, all properties can be enumerated. + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Creates new logger that automatically appends the specified properties to all log events (without changing current logger) + + With property, all properties can be enumerated. + + Collection of key-value pair properties + New Logger object that automatically appends specified properties + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + With property, all properties can be enumerated (or updated). + + + It is highly recommended to ONLY use for modifying context properties. + This method will affect all locations/contexts that makes use of the same named logger object. And can cause + unexpected surprises at multiple locations and other thread contexts. + + Property Name + Property Value + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided property + + Name of property + Value of property + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Updates the with provided properties + + Properties being added to the scope dictionary + A disposable object that removes the properties from logical context scope on dispose. + property-dictionary-keys are case-insensitive + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Pushes new state on the logical context scope stack + + Value to added to the scope stack + A disposable object that pops the nested scope state on dispose. + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + Type of custom Logger wrapper. + 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 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. + An exception to be logged. + A to be written. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An exception to be logged. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + + + + 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. + + + Log levels ordered by severity:
+ - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
+ - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
+ - (Ordinal = 2) : Information that highlights progress or application lifetime events.
+ - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
+ - (Ordinal = 4) : Errors where functionality has failed or have been caught.
+ - (Ordinal = 5) : Most critical level. Application is about to abort.
+
+
+ + + Trace log level (Ordinal = 0) + + + Most verbose level. Used for development and seldom enabled in production. + + + + + Debug log level (Ordinal = 1) + + + Debugging the application behavior from internal events of interest. + + + + + Info log level (Ordinal = 2) + + + Information that highlights progress or application lifetime events. + + + + + Warn log level (Ordinal = 3) + + + Warnings about validation issues or temporary failures that can be recovered. + + + + + Error log level (Ordinal = 4) + + + Errors where functionality has failed or have been caught. + + + + + Fatal log level (Ordinal = 5) + + + Most critical level. Application is about to abort. + + + + + Off log level (Ordinal = 6) + + + + + 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. + + + + + + + + + + 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 other 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. + + + + + Compares the level to the other object. + + The other 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. + + + LogManager wraps a singleton instance of . + + + + + Internal for unit tests + + + + + 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. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + Setter will re-configure all -objects, so no need to also call + + + + + 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 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. + + + + + 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. + + Purge garbage collected logger-items from the cache + + + + 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. + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Suspends the logging, and returns object for using-scope so scope-exit calls + + + Logging is suspended when the number of calls are greater + than the number of calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Resumes logging if having called . + + + Logging is suspended when the number of calls are greater + than the number of calls. + + + + + Returns if logging is currently enabled. + + + Logging is suspended when the number of calls are greater + than the number of calls. + + A value of if logging is currently enabled, + otherwise. + + + + 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. + + + + 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 + + + + + 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 } + + + + + + 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. + + + + + Convert, Render or serialize a value, with optionally backwards-compatible with + + + + + 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 + + + format string 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 + + + + 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 general options for NLog LogFactory before loading NLog config + + + + + 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 + + Fluent interface parameter. + Explicit configuration file to be read (Default NLog.config from candidates paths) + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config + + Fluent interface parameter. + Candidates file paths (including filename) where to scan for NLog config files + Whether to allow application to run when NLog config is not available + + + + Loads NLog config from XML in + + + + + Loads NLog config located in embedded resource from main application assembly. + + Fluent interface parameter. + Assembly for the main Application project with embedded resource + Name of the manifest resource for NLog config XML + + + + Reloads the current logging configuration and activates it + + Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. + + + + 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 + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom NLog Target. + + Type of the Target. + Fluent interface parameter. + The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Target. + + Fluent interface parameter. + Type name of the Target + The target type-alias for use in NLog configuration + + + + Register a custom NLog Layout. + + Type of the layout renderer. + Fluent interface parameter. + The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. + + + + Register a custom NLog Layout. + + Fluent interface parameter. + Type of the layout. + The layout type-alias for use in NLog configuration + + + + Register a custom NLog LayoutRenderer. + + Type of the layout renderer. + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. + + + + Register a custom NLog LayoutRenderer. + + Fluent interface parameter. + Type of the layout renderer. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of the layout renderer. + + + + Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + The layout-renderer type-alias for use in NLog configuration - without '${ }' + Callback that returns the value for the layout renderer. + Options of 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. + + + + Register (or replaces) singleton-object for the specified service-type + + Service interface type + Fluent interface parameter. + Implementation of interface. + + + + Register (or replaces) singleton-object for the specified service-type + + Fluent interface parameter. + Service interface type. + Implementation of interface. + + + + Register (or replaces) external service-repository for resolving dependency injection + + Fluent interface parameter. + External dependency injection repository + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configure the InternalLogger properties from Environment-variables and App.config using + + + Recognizes the following environment-variables: + + - NLOG_INTERNAL_LOG_LEVEL + - NLOG_INTERNAL_LOG_FILE + - NLOG_INTERNAL_LOG_TO_CONSOLE + - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR + - NLOG_INTERNAL_LOG_TO_TRACE + - NLOG_INTERNAL_INCLUDE_TIMESTAMP + + Legacy .NetFramework platform will also recognizes the following app.config settings: + + - nlog.internalLogLevel + - nlog.internalLogFile + - nlog.internalLogToConsole + - nlog.internalLogToConsoleError + - nlog.internalLogToTrace + - nlog.internalLogIncludeTimestamp + + + + + Extension methods to setup NLog + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Logger name pattern to check which names matches this rule + Rule identifier to allow rule lookup + + + + Defines for redirecting output from matching to wanted targets. + + Fluent interface parameter. + Override the name for the target created + + + + Apply fast filtering based on . Include LogEvents with same or worse severity as . + + Fluent interface parameter. + Minimum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with same or less severity as . + + Fluent interface parameter. + Maximum level that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity that equals . + + Fluent interface parameter. + Single loglevel that this rule matches + + + + Apply fast filtering based on . Include LogEvents with severity between and . + + Fluent interface parameter. + Minimum level that this rule matches + Maximum level that this rule matches + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Filter for controlling whether to write + Default action if none of the filters match + + + + Apply dynamic filtering logic for advanced control of when to redirect output to target. + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + Default action if none of the filters match + + + + Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will on match also be ignored by following logging-rules + + + + Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate + + + Slower than using Logger-name or LogLevel-severity, because of allocation. + + Fluent interface parameter. + Delegate for controlling whether to write + LogEvent will not be evaluated by following logging-rules + + + + Move the to the top, to match before any of the existing + + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Redirect output from matching to the provided + + Fluent interface parameter. + Target-collection that should be written to. + Fluent interface for configuring targets for the new LoggingRule. + + + + Discard output from matching , so it will not reach any following . + + Fluent interface parameter. + Only discard output from matching Logger when below minimum LogLevel + + + + Returns first target registered + + + + + Returns first target registered with the specified type + + Type of target + + + + Write to + + Fluent interface parameter. + Method to call on logevent + Layouts to render object[]-args before calling + + + + Write to + + Fluent interface parameter. + Override the default Layout for output + Override the default Encoding for output (Ex. UTF8) + Write to stderr instead of standard output (stdout) + Skip overhead from writing to console, when not available (Ex. running as Windows Service) + Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) + + + + Write to + + + Override the default Layout for output + Force use independent of + + + + Write to + + + Override the default Layout for output + + + + Write to (when DEBUG-build) + + + Override the default Layout for output + + + + Write to + + Fluent interface parameter. + + Override the default Layout for output + Override the default Encoding for output (Default = UTF8) + Override the default line ending characters (Ex. without CR) + Keep log file open instead of opening and closing it on each logging event + Activate multi-process synchronization using global mutex on the operating system + Size in bytes where log files will be automatically archived. + Maximum number of archive files that should be kept. + Maximum days of archive files that should be kept. + + + + Applies target wrapper for existing + + Fluent interface parameter. + Factory method for creating target-wrapper + + + + Applies for existing for asynchronous background writing + + Fluent interface parameter. + Action to take when queue overflows + Queue size limit for pending logevents + Batch size when writing on the background thread + + + + Applies for existing for throttled writing + + Fluent interface parameter. + Buffer size limit for pending logevents + Timeout for when the buffer will flush automatically using background thread + Restart timeout when logevent is written + Action to take when buffer overflows + + + + Applies for existing for flushing after conditional event + + Fluent interface parameter. + Method delegate that controls whether logevent should force flush. + Only flush when triggers (Ignore config-reload and config-shutdown) + + + + Applies for existing for retrying after failure + + Fluent interface parameter. + Number of retries that should be attempted on the wrapped target in case of a failure. + Time to wait between retries + + + + Applies for existing to fallback on failure. + + Fluent interface parameter. + Target to use for fallback + Whether to return to the first target after any successful write + + + + Extension methods to setup general option before loading NLog LoggingConfiguration + + + + + Configures the global time-source used for all logevents + + + Available by default: , , , + + + + + Configures the global time-source used for all logevents to use + + + + + Configures the global time-source used for all logevents to use + + + + + Updates the dictionary ${gdc:item=} with the name-value-pair + + + + + Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit + + + + + Sets the default culture info to use as . + + + + + Sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets or sets a value indicating whether should be thrown on configuration errors + + + + + Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace + + + + + 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 + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : AsyncTaskTarget + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private async Task SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + 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 + + + + + + + + Override this to provide async task for writing a single logevent. + + 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 provide async task for writing a 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 + + + + Block for override. Instead override + + + + + Block for override. Instead override + + + + + + + + Write to queue without locking + + + + + + Block for override. Instead override + + + + + LogEvent is written to target, but target failed to successfully initialize + + Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 send the log messages to the standard error instead of the standard output. + + + + + + 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. + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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 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 activate internal buffering to allow batch writing, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + + + + Outputs log messages through + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + + + + + + + Outputs the rendered logging event through + + The logging event. + + + + Mock target - useful for testing. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + + + + 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. + serialization 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. + serialization 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. + serialization 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 beginning 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. + + + See NLog Wiki + + 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. + + + + 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
+ KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. +
+ +
+ + + 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. Zero or negative means disabled. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. + + + + + + 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. + + Defaults to true for UTF-16 and UTF-32 + + + + + + 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. + + + Notice when combined with then it will attempt to append to any existing + archive file if grown above size multiple times. New archive file will be created when using + + + + + + 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. + + + + + + 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. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + 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. + + + + + 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 occurring day of the week to return a DateTime for. + The DateTime of the next occurring 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 filenames + + + + 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. + + + + Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists + + + + + 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. + + + + Initialize 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. + + + + 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. + The name of the file inside the archive. + + + + 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. + + + + Options for JSON serialization + + + + + 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 + + + + + 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. + + + + + + + + + + + + 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. + + + + + + + + + + + Sends log messages by email using SMTP protocol. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 + + + + + + + + + + + + + + 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 in memory for programmatic retrieval. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 to + + 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 layout that should be use to calculate the value for 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 fallback value when result value is not available + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + + + 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. + + + + Arguments for events. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Provides a value to use with events that do not have event data. + + + + + Creates new instance of NetworkTargetLogEventDroppedEventArgs + + + + + The reason why log was dropped + + + + + The reason why log event was dropped by + + + + + Discarded LogEvent because message is bigger than + + + + + Discarded LogEvent because message queue was bigger than + + + + + Discarded LogEvent because attempted to open more than connections + + + + + Sends log messages over the network. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. +

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • +
  • tcp4://host:port - force TCP/IPv4
  • +
  • tcp6://host:port - force TCP/IPv6
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • +
  • udp4://host:port - force UDP/IPv4
  • +
  • udp6://host:port - force UDP/IPv6
  • +
  • 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. On limit breach then action is activated. + + + + + + Gets or sets the maximum simultaneous connections. Requires = false + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more connections than . + + + + + + Gets or sets the maximum queue size for a single connection. Requires = true + + + When having reached the maximum limit, then action will apply. + + + + + + Gets or sets the action that should be taken, when more pending messages than . + + + + + + Occurs when LogEvent has been dropped. + + + - When internal queue is full and set to
+ - When connection-list is full and set to
+ - When message is too big and set to
+
+
+ + + Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true + + + + + + Gets or sets the action that should be taken if the message is larger than + + + For TCP sockets then means no-limit, as TCP sockets + performs splitting automatically. + + For UDP Network sender then means splitting the message + into smaller chunks. This can be useful on networks using DontFragment, which drops network packages + larger than MTU-size (1472 bytes). + + + + + + Gets or sets the encoding to be used. + + + + + + Gets or sets 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 + + + + + + Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. + + + + + Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + + + + 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. + + + + Type of compression for protocol payload + + + + + No compression + + + + + GZip optimal compression + + + + + GZip fastest compression + + + + + The action to be taken when there are more connections then the max. + + + + + Allow new connections when reaching max connection limit + + + + + Just allow it. + + + + + Discard new messages when reaching max connection limit + + + + + 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. Only relevant for UDP sockets, as TCP sockets does it automatically. + + + Udp-Network-Sender will split the message into smaller chunks that matches . + This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). + + + + + Discard the entire message. + + + + + 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. + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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 whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include log4j:NDC in output from nested context. + + + + + + Gets or sets the separator for operation-states-stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + 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 stack separator for log4j:NDC in output from nested context. + + + + + + Gets or sets the stack separator for log4j:NDC in output from nested context. + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

+ 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. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + 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 + + + + + + NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. + This ensure high concurrency with no lock-congestion for the application-threads, especially when using + or AsyncTaskTarget. + + But if using custom or that are not + threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one + to update to NLog 5.0 without having to fix custom/external layout-dependencies. + + + + + + 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. + + + + + 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. + + + + + + + + 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. + + + + LogEvent is written to target, but target failed to successfully initialize + + + + + 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 before writing starts + + + + + Closes the target to release any initialized resources + + + + + Flush any pending log messages + + The asynchronous continuation parameter must be called on flush completed + The asynchronous continuation to be called on flush completed. + + + + Writes logging event to the target destination + + 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. + + + + 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, 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 logevent into a string-result using the provided layout + + The layout. + The logevent info. + String representing log event. + + + + Renders the logevent into a result-value by using the provided layout + + + The layout. + The logevent info. + Fallback value when no value available + Result value when available, else fallback to defaultValue + + + + Resolve from DI + + Avoid calling this while handling a LogEvent, since random deadlocks can occur. + + + + Should the exception be rethrown? + + Upgrade to private protected when using C# 7.2 + + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + The target type-alias for use in NLog configuration + + + + Marks class as logging target and attaches a type-alias name for use in NLog configuration. + + + + + Initializes a new instance of the class. + + The target type-alias for use in NLog configuration. + + + + 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 the type of the property. + + + + + + Gets or sets the fallback value when result value is not available + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + + Render Result Value + + Log event for rendering + Result value when available, else fallback to defaultValue + + + + Represents target that supports context capture of Properties + Nested-states + + + See NLog Wiki + + + [Target("MyFirst")] + public sealed class MyFirstTarget : TargetWithContext + { + public MyFirstTarget() + { + this.Host = "localhost"; + } + + [RequiredParameter] + public Layout Host { get; set; } + + protected override void Write(LogEventInfo logEvent) + { + string logMessage = this.RenderLogEvent(this.Layout, logEvent); + string hostName = this.RenderLogEvent(this.Host, logEvent); + return SendTheMessageToRemoteHost(hostName, logMessage); + } + + private void SendTheMessageToRemoteHost(string hostName, string message) + { + // To be implemented + } + } + + Documentation on NLog Wiki + + + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets whether to include the contents of the properties-dictionary. + + + + + + Gets or sets whether to include the contents of the nested-state-stack. + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + List of property names to exclude when is true + + + + + + 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 dictionary for the + + + Dictionary with ScopeContext properties 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 + + + Collection with NDC context if any, else null + + + + Returns the captured snapshot of nested states from for the + + + Collection of nested state objects if any, else null + + + + Returns the captured snapshot of for the + + + Collection 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 + + + + Takes snapshot of dictionary for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with ScopeContext properties 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 + + + + Take snapshot of a single object value from dictionary + + Log event + ScopeContext Dictionary key + ScopeContext Dictionary value + Snapshot of ScopeContext property-value + Include object value in snapshot + + + + Takes snapshot of for the + + + Collection 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 + + + Collection with NDLC context if any, else null + + + + Takes snapshot of nested states from for the + + + Collection with stack items 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 from nested states + + Log event + nested state value + Snapshot of stack item 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 properties-dictionary + + + Internal Layout that allows capture of nested-states-stack + + + + Represents target that supports string formatting using layouts. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + Gets or sets the layout used to format log messages. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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:withexception=true} + + + + + Gets or sets the text to be rendered. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + Force 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:withexception=true} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} + + 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. + + + See NLog Wiki + + 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: +

+ +

+ 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 value of the User-agent HTTP header. + + + + + + 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 + + + Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling + + + + + + 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. + + + + + + + + + + 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 + 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. + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and set to + + + + + 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queuing + 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: +

+ +

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

+ +
+
+ + + 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) + + + + + + Occurs when LogEvent has been dropped, because internal queue is full and set to + + + + + Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. + + + See NLog Wiki + + Documentation on NLog Wiki + +

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

+ +

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

+ +
+
+ + + 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 + + If not explicitly set, then disabled by default for and AsyncTaskTarget + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + 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. + + + + + + + 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. + + + + + + + + + + + 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 + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, but fallback will be handled individually + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + Identifier to perform group-by + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + Group by identifier. + + + + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + See NLog Wiki + + Documentation on NLog Wiki + + + + 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 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. + + + + + Initializes a new instance of the class. + + LogEvent that have been dropped + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Initializes a new instance of the class. + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + + + Gets or sets whether to enable batching, and only apply single delay when a whole batch fails + + + + + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + See NLog Wiki + + 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: +

+ +

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

+ +
+
+ + + 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. + + + + 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. + + + + + + + + + + + + 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. + + The Time type-alias for use in NLog configuration. + + + + Indicates that the value of the marked element could be null sometimes, + so checking for null is required 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 can 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. + + + public void Foo([ItemNotNull]List<string> books) + { + foreach (var book in books) { + if (book != null) // Warning: Expression is always true + Console.WriteLine(book.ToUpper()); + } + } + + + + + 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. + + + public void Foo([ItemCanBeNull]List<string> books) + { + foreach (var book in books) + { + // Warning: Possible 'System.NullReferenceException' + Console.WriteLine(book.ToUpper()); + } + } + + + + + Indicates that the marked method builds string by the format pattern and (optional) arguments. + The parameter, which contains the format string, should be given in the 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 the format string + + + + + Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments + in the order in which they appear + + + void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } + + void Foo() { + LogInfo("User created: {username}"); // Warning: Non-existing argument in format string + } + + + + + Use this annotation to specify a type that contains static or const fields + with values for the annotated property/field/parameter. + The specified type will be used to improve completion suggestions. + + + namespace TestNamespace + { + public class Constants + { + public static int INT_CONST = 1; + public const string STRING_CONST = "1"; + } + + public class Class1 + { + [ValueProvider("TestNamespace.Constants")] public int myField; + public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } + + public void Test() + { + Foo(/*try completion here*/);// + myField = /*try completion here*/ + } + } + } + + + + + Indicates that the integral value falls into the specified interval. + It's allowed to specify multiple non-intersecting intervals. + Values of interval boundaries are inclusive. + + + void Foo([ValueRange(0, 100)] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the integral value never falls below zero. + + + void Foo([NonNegativeValue] int value) { + if (value == -1) { // Warning: Expression is always 'false' + ... + } + } + + + + + Indicates that the function argument should be a string literal and match + one of the parameters of the caller function. This annotation is used for parameters + like 'string paramName' parameter of the constructor. + + + 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 the method has a single input parameter, its name could be omitted.
+ Using halt (or void/nothing, which is the same) for the method output + means that the method 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 the semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by the analysis engine.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("null <= param:null")] // reverse condition syntax + public string GetName(string surname) + + + [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 whether the marked element should be localized. + + + [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 be ignored by usage-checking inspections.
+ You can use and + to configure how this attribute is applied. +
+ + [UsedImplicitly] + public class TypeConverter {} + + public class SummaryData + { + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] + public SummaryData() {} + } + + [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] + public interface IService {} + +
+ + + Can be applied to attributes, type parameters, and parameters of a type assignable from . + When applied to an attribute, the decorated attribute behaves the same as . + When applied to a type parameter or to a parameter of type , + indicates that the corresponding type is used implicitly. + + + + + Specifies the details of implicitly used symbol when it is marked + with or . + + + + 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. + + + + Specifies what is considered to be used implicitly when marked + with or . + + + + Members of the type marked with the attribute are considered used. + + + Inherited entities are considered used. + + + Entity marked with the 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 the 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 can only be invoked during method execution + (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, + when the containing method is no longer on the execution stack). + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. + + + + + Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. + Can be used for delegate/enumerable parameters of 'async' methods. + + + + + 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); // Warning: Return value of pure method is not used + } + + + + + Indicates that the return value of the method invocation must be used. + + + Methods decorated with this attribute (in contrast to pure methods) might change state, + but make no sense without using their return value.
+ Similarly to , this attribute + will help to detect usages of the method when the return value is not used. + Optionally, you can specify a message to use when showing warnings, e.g. + [MustUseReturnValue("Use the return value to...")]. +
+
+ + + This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. + When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: + * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure + has no captures of the containing local variables and the compiler is able to cache the delegate instance + to avoid heap allocations. Otherwise the warning is produced. + * IDE warns when method name or local function name is passed as an argument as this always results + in heap allocation of the delegate instance. + + + In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier + to make use of the similar analysis provided by the language/compiler. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value of 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 code completion + as a 'Source Template'. When the extension method is completed over some expression, its 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. + + + + + Indicates how method, constructor invocation, or property access + over collection type affects the contents of the collection. + When applied to a return value of a method indicates if the returned collection + is created exclusively for the caller (CollectionAccessType.UpdatedContent) or + can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) + Use to specify the access type. + + + Using this attribute only makes sense if all collection methods are marked with this attribute. + + + public class MyStringCollection : List<string> + { + [CollectionAccess(CollectionAccessType.Read)] + public string GetFirstString() + { + return this.ElementAt(0); + } + } + class Test + { + public void Foo() + { + // Warning: Contents of the collection is never updated + var col = new MyStringCollection(); + string x = col.GetFirstString(); + } + } + + + + + Provides a value for the to define + how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. + Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. + + + static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class + { + // custom check for null but no enumeration + } + + void Foo(IEnumerable<string> values) + { + ThrowIfNull(values, nameof(values)); + var x = values.ToList(); // No warnings about multiple enumeration + } + + + + + Indicates that the marked parameter, field, or property is a regular expression pattern. + + + + + Language of injected code fragment inside marked by string literal. + + + + + Indicates that the marked parameter, field, or property is accepting a string literal + containing code fragment in a language specified by the . + + + void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) + { + // cssProps should only contains a list of CSS properties + } + + + + Specify a language of injected code fragment. + + + Specify a string that "precedes" injected string literal. + + + Specify a string that "follows" injected string literal. + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns. + + + + From 7fa5379ee1716d352f7cd8a02b8bc71884dbd039 Mon Sep 17 00:00:00 2001 From: ChrisMarsh82 <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 12 Dec 2022 15:13:37 +0000 Subject: [PATCH 71/88] add packages/NLog to ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1da612d1fff..74f0ebe39a4 100644 --- a/.gitignore +++ b/.gitignore @@ -250,3 +250,4 @@ installer/Output/ # Package used by script window /packages/jacobslusser.ScintillaNET.*/ +/packages/NLog.*/ From 5013da4355130e9c56a1310a9ea094b8506269e2 Mon Sep 17 00:00:00 2001 From: ChrisMarsh82 <84872334+ChrisMarsh82@users.noreply.github.com> Date: Mon, 12 Dec 2022 15:15:26 +0000 Subject: [PATCH 72/88] Removed NLog from packages --- packages/NLog.5.1.0/.signature.p7s | Bin 11531 -> 0 bytes packages/NLog.5.1.0/N.png | Bin 1903 -> 0 bytes packages/NLog.5.1.0/lib/net35/NLog.dll | Bin 818688 -> 0 bytes packages/NLog.5.1.0/lib/net35/NLog.xml | 27801 --------------- packages/NLog.5.1.0/lib/net45/NLog.dll | Bin 846848 -> 0 bytes packages/NLog.5.1.0/lib/net45/NLog.xml | 28286 --------------- packages/NLog.5.1.0/lib/net46/NLog.dll | Bin 850432 -> 0 bytes packages/NLog.5.1.0/lib/net46/NLog.xml | 28326 ---------------- .../NLog.5.1.0/lib/netstandard1.3/NLog.dll | Bin 763904 -> 0 bytes .../NLog.5.1.0/lib/netstandard1.3/NLog.xml | 26194 -------------- .../NLog.5.1.0/lib/netstandard1.5/NLog.dll | Bin 809472 -> 0 bytes .../NLog.5.1.0/lib/netstandard1.5/NLog.xml | 27149 --------------- .../NLog.5.1.0/lib/netstandard2.0/NLog.dll | Bin 836096 -> 0 bytes .../NLog.5.1.0/lib/netstandard2.0/NLog.xml | 27946 --------------- 14 files changed, 165702 deletions(-) delete mode 100644 packages/NLog.5.1.0/.signature.p7s delete mode 100644 packages/NLog.5.1.0/N.png delete mode 100644 packages/NLog.5.1.0/lib/net35/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/net35/NLog.xml delete mode 100644 packages/NLog.5.1.0/lib/net45/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/net45/NLog.xml delete mode 100644 packages/NLog.5.1.0/lib/net46/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/net46/NLog.xml delete mode 100644 packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/netstandard1.3/NLog.xml delete mode 100644 packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/netstandard1.5/NLog.xml delete mode 100644 packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll delete mode 100644 packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml diff --git a/packages/NLog.5.1.0/.signature.p7s b/packages/NLog.5.1.0/.signature.p7s deleted file mode 100644 index 4358b790ab808ad0f4fd526b4b34d81ebeda68fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11531 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

x>j;-cLdM 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

ZS#+TW)^ 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

*O^`+6oeX_AaOh5q%)l7%Bt@1p zMdG*VPLX0H3Vn6&Q*$;f5T;rg`~Z7azVO9u#yqPFHapo#|gxMTrvGiY3zErVyj|2<0|W^oe}LB z^u8x4rLr#N_-J}d5<91O5W59l<3z*6xCOgn9lXxkipzK!#gx>`tsA_>B=peJuA;X} zF{8M&ZloNpj;2v()w-=>k;_w#?u$?|Vk`D{yLHU$MlwjPnraS5Wx_DmmLDDH~t(H}; zjsF=uzG`??#4`#hxgoxO1DcUR>s4AO_!Zni-dBPzRTLNWF+r?L>63+XB8F3Iv z%}mM|02<6VfyrKX8=GV&xeAS4tQr);pbEmiY4|@L*YtBTAy}5uPTYoO@z& zwxFDN5~La(dRFu4`>aq|S~hPP{APLx@Lkq)f54Z~in8!kOXuoVy23My8O>RrH-EpB zL$?X(Q&;*$;B==uFK`(r6%$bNDFq~j;{q0PHjv)@4=7W;@oT8UABrN`+hG$)+mvt7 zuY7@@4#*Sr2SgEerI8H{o#CTDY5k1*e+QA|<8QPcPmQ;5i0~*5f$Dg#mB(vv=qCjH z=@PytO8tRv#iWL?bT*YDUFnXl<0v2ZkxzicD8sK(9A&h>qrXz6+`1?>^p_-sHxhgE zzaw>WCXPpF!N}9LcvylN3g9B-{LcR*gmmgnlzPqj0f^jMD1pXs)tsFj%A&nxH&8xn zr!o(*Irz5|-u%O0aOQ_!&d`;W+CU39<$VPhh0q6uqY9x9-a3V>BJ#M`1t!ISR`S?N3X}Do2Qh+mu&aPn-cJlo<349SL z0rry;-gcEhoSrA}EVH_u%b-`~)k(pt{;3Rmh^q)3a%I%QEg1}BSc>KkieWTX?lAWB z*DWQ_+SAQ~*%Y!OEInRcYbkC$pCJoRJ&S+kF7m6Kh@Ma!|10U0QbmRG>{&p zLksb12u}3lj1)y9pT7=TK`HcHODaECM<`5BAntZSmA}>_UO%79Q%OjJQ(Q$`MI=o` zcH#l>l1SAe{KOUH-bO!)9DbEW$*d2jg9R`Y6$4vPG3SY-6kH&ZT<|*xLcA7A7NKMj zN);iW2+^3g)N0tO1N#Q)se?BOvi5w|nommkVLN_~F8=r=yzQREDi|@Y1Bs@5z%@ z4I0bv1$vZj9!XFaQJMTKr2Ht1V{A*bP4+@uY1#}>gXlFwYzeH0shPAkl6EZ^S=+l{ z!A;YFx%f@wqFef037jUh|#$ix~1_2>v2(;5P& zC>3N(dsL}dd>*CJS$gzaR_l#NCF2WU#XnIG?W2DDTL<@ZQG~`k7lju8ujitkL;0P! z?tE@}*RcZ-mK))ESvVU-eZW8RK0Kr{KdC`zc^887vx6dKn2TojFKtV6G*(qr%Z zKtyRTkKTFo7_>Yk^#^H4W6kC%DK14+@iD+gZwA#FzD(+6%k?L&eVuD z&>lUafuaFd%IveKJhRVgi0=x36(dKEPA{YHqW9AOP+#(V2;b5ELozXTJ%fJ#ug{zL z)e+?D%yy-Gs1j{XO2}hp55T;yig~%<
Zh|{zIw)h%v2DJtj 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 z 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
$Xf%_H? z?kUJFile4~Yfo8r1!Q@W<~myo{={IBe} zS9gQAxzRlXAje?{w044w&w|_^IdETM*Pepx6394`ab@Y`ry4fzz##hl2+|IM`w}ng ziAg7^w}93@(Ap<|LjE?8?Mz80S*{!0m-y439+2fpmd}7}FUh#9Y?5{kWWIuQl6n#3 zd@F(0FVOl0GG7^F+$6}jDR5un|Mob%&$0Om(jNfn$Df{qKRO-)nU7??7|3{%@o|vx z&EUSoQR4~uN&1uWr=*kA)6%=aeTnys_kcDIpp64);{Y-~E1RU92N_Q?z92tIe_1w3 zdkWl_IAz@7I}z(INIe8v|3K@X{4x0xvPs6bgN!E`pOT-XKO>u@os~_}&VjQ6XO8DV zYd>i12idLy$hc8(U*a?4o*D5r@y_wG;z`C&S^W3MD3za zfYv|I`Uf&!24s9zHc2}NVtsff53(G|as`m(NXCtV`x2KuQsbl%_(_2_9w5u5LEHb}zQmemGxC%456C}g{;xkf z1TrtlyjhU>NX8F?%$EbP9zI);pQOJie_1+7y#m^}fXureWP9-^nf>^HjEl)8X}5qZ zN3vW(evlpCA?!@{6vK+~BF_7^j^Tt7&mmrV7g#0A^N%>RKN$P3o-QcaAe|(l?y(H`H z0j=Ml^&4cp8Ia`%K-Qa;PEyZ-w{{+WmSny>$UG$T6hP)789xfL-DT+{^+}NVr@&h~ zXFNwTpPTE;lZ*?3EFS`GoIo2V(8dX5TpYA<0(rhl$WPLrl)oKh9+G)dAoGxnOM}eQ z4RZa@$WPKg2;SNme~x5(Nseb0WFC@nIq=rb#B(I$3i6Zm7eUrD3f|gz<#QzCNaibp z%ttbQ614FG88-zot^%?@B>Urz@a0IB3xF&alTK1^25mk`Pe@OKjBk^_9klTRZM;Am zFOYfCAmh71=F7-W(mx>oAjo!Sz^a(uYfjAppDa!8YhtPL2#t&?&nCx$K)sJZvk1JWch^rB>ipR zNY{^_OGziGcbop$a~bI*^&yb?NaoARKMb;;IdG)w$>&J+leBRG+0Rk)PdrxwnTKSa zF)-)uo+52L{*A16zxjVLMbht%`u|9O05<4DF0gN)08BVEnUlQzB}<4T~7E694v(n*$|0!O-9pC?%k5239bNq+!j z{vbHg)$u&ZIPy1HtY;welgu9jSue@*&EQDaN1yjxC*E#k9_q|9ALMyF0kS;F@@?Qq zSMGU|@hd^QJ^>k*0vXp0j&yB(z6Z2%1#MhG#$`ap4T2+G#plVK`_1!N`APb7=3lgz zq(2WbAIW?LkoiWzk*-tsk~w$w-Z7BvD$7qY-xP@U?V)Q3QpCs{rVvOLN9a^OhUQ!kK=FUU{QKWhFLUm)o(%TLljW&T%RAnC7wHa?(@ z&$~4~AmfAJNY|S$khZRYEEfaWE|PK0;7Hd$Um)pk0hyO%-ua*%cOc6pK$dF*N4loH zNHRak@+-lda}|>DsedEOb;BO%n)f2fawN-T6h|^{5FF`R^x_a`;|kiif;O%o<8t6g z*9TrKNGGX}n*PxjN!CNMo)XA>B=eO)<|A2d3LNQL`{I7^%{$MnIQ;&Vev1juqE%e8?cT_Z1gK51lm+FS=yiYFQ0 zZSj*Yl8oyCnV)3-49NT>;|IZ!u0Ow+l}=JG$R=rzg3MO}ZM;AmFOd1lAmgUMk*?r` zi+Mc=^7<$QvK+~BG5JZBOUNc^w}B&FGbTLe8CicyaU|o?AkR15;7Hek36gOn$F~Qx z{)5(k(E1Ou`~Ya@O_1fXApIo$!=Rln!I7@hCUPLhJr6Q3$-D)Sc|A731=Fd-%^png#EPu}Y+a~g$jT6Xvit>+| z|5p=J#@|l_j`j5h!I7@#C&-7oD&n6-_Y!s17gv0<#m{<)e5mV0Bilinar42PyRkxY z|0K-bVx-*$d!*~Em&k{@E->0S!Djh((8dX5`@6xBu4`T*AL{BgGM+Z$Ga&cZ0LXD1 z1hL;4y<*2jV5XgE+){_O9CkKvn-S-mtP}f67mZQyb1;rIX);9`{bUpeK z`B2v$Bjct_pL&U;T>)7i$@=z#IX6-vIWDeQ^9~&8I`~o$WVtBF@gx}+GdnRt(vE{{ zM+?aOB=gS)bMBuNl5q);{Y!$3Zv#iVqA!yVb;SlFXX| znKunGZ#Ov7^`VzZ+fN|NWkB0cAmawXk*@1rCLij`7;XQ+X8aIn`v4JiGB3%zW8l6l)(Md1rofS|`(Gwmj%2xD z3-ytg$%ndrZ=|0#{c(`}YPPtkm&u2^-V_6`&}KZz_!iLi7sz%bLEA6jNLS-4Z6M=G z#;3rX+c83N+|!_qH#pMu?pL}&9FIoE_rPX;lKBTf8+Q=*6R!+{4|ToI$oTcJbMF3E zN#@Uj9FJj;<#OOi*M+Z;4|R1J**@AVzXi;>zrI=kS*{4OTnV)C2HB3X{FCxefjPJ4 zmB4#^d=MPzs=Puz)OFBk;|!bigh1vanJ)&iz66+a7yg2@c`3aIv~d6#pOL;Eb^0<9e&q~(-cg;?c<`3B@40-1+o zp7r3HcMiXn1sOLCGEYHvQFdAOr0glsz8e5-96%cfko(`Ap#Fo*7X_)uq{pSVfGkh4 zd{TN^>;_rSfb1dA+7B{53+CK&J4ueiFv$9fVhLnC$@npl?I?rn?xK}V9u@k zCCR)wkozkSTK%Ba53=7ykon58CuLVa#*>V9i+p?lWPD6^Ty{csQg%DY@+8Zr`D$ptT!(^Um7W%kq~SCF5izX;mAmtK}WDcvnqKS0I@K*ona>kr7hQIOvw#Xz=)Wc+-P z-(w}Dlhl(S^R$7#1=~U9Bbjd{$Z{#r_9Mu0-5}#L(n;!r(zDV@>Uq%m4_g1_FUVh( zO)|a$GM;2S{wrL+A3^$KvPs&_Als9WPEv1^-VR#7K;}z<)*p~@-JtbHdPe%7^dXSt zNtVxoEKjohFvxMtfy`5opQL{jnlZ&c}7952PKekB;zLKp91;(KYogjZvm}+AmiqPZ{GQZ*W198Hyu&#HZCalfQ%y< zHvqD}^&rO~3*!5q0?Gaj%bx>J-n62;1!Pj{E6 z_o*^@o4dap0@)st?TLeoYc~Jro&;#)E4|J1`^)44d zu`Eu3YzN7F`@uKwy!&k<_zh&n*^=4-`wF z^#inim_GAS{8!@W|J-5_wC9x|<3b?gV)7@%lyP&R8|3${J)pG@WPC>cL6Gw@D?0~r zzUD#3lZ-FOKWhHbJtWJOrSAv%TmZqgpF*Iu5484~o-QVgbBk>t>miw^9b`Po_!O9P z4-_-TnU4;D+;4**$2%*1Sb83`_JS;5ls+j||Hj3*hN1#|A=(P5BrIgsn@7SPr`^WQr< z3SO1R_?rFl=p@Ma3dnq<^`n*fULFmA^v7h!Ww(HgCmEkG|D}(n#9ol~X3YNmqk|yl z*AQs!23c-BXzMqabH9JIAeKPJk&G*we(|U~lX3Ts#*8nI#zD3(Av-0er4ND3GX}nS z=jiJd+563YrF~;135q1!C!!B>AfJ=J(9=Wdf6oHJji?`^KCId z)>rvUAoERv?1wv>`4*KzAj^>~7YFHY0U4hFbFROXl-_3cQIqW;%cabIzLb`~M>@%T z8S~#eIw1d`I0Q0(R{mk>IWZ41|ET$|nw*qAB|Dh#?F@m|evtJ=!Eb&W{g8h?$o)=I zPfBkGS&n46m0-@zcq1);w>TgUi+PacNS50IGH+4-GWc8Qld`8om-Ko7suT1KF>#^eO4?9A7>N zvL7MP+7B{+O#Wv16S9qgvma}do|0~a-Yq>N-3Wa^`kzADT1^JEelk|_u zUzXnp|CDss=KE!YPO@AOw0?rtPtf`aavWnM;z`CQq#L1=)Kk)p&`Ih&AoG&Un^Bw* zaU|oi(v8sbuvv~|xq|#g_(x&0-6fF6Sy_G~{8RF~cJ-TtPMh@wL6(onZ-k$uzghkk zknJGZjs(bYF(STAaqS@6k&@pCKgoREip$7vgrB5;5ajdVA&~WvtS<|)J|p5u#^*q` zKM%6rg5r#bBNmE%#)Cv1X+Jdc3O5u_JHgm z(E0;ff8-yQzaYB=GLB^27|83DDUkKJ_xW}OK-xhuE;frTAoGyS(qYI;(m~MNahK?-?t|OvOLN1&C(Mf$2lpxOH23c=b{w*NOkt|n`J_>UDro`X}yxlCeiQVEL$azWfy~Pm7`iAAt ziA8Z#oD`?T3dnNNmA*YOknLy|TR{3r_9G#^O>774_>$c%X2d};E9S&J$h;);7Nn1g zC6IZ?K#mv5@ha1XJ_Xu*Tjihchd|~dnXd(8`F80&|3>-;V6*(7I0Q0&Sawd#gUnl$ zJt|I$Q{X))haX*AzJM46xqrx0wvK+~BDe2u}FUWDp zgN!2?H!1&qkmDEV@b!g2YX``G&;5ff%m{J$R3ql z0vS&-zAV4H$hS8rHj6DF<4MLRrMHPGFy~f1M)H1RQ2G#P?E+bDRC@4YjSEPB2&BJR z`h1Z6Ovp}&8F2`-ydcYEr5D7qxF6(wQS=he`Nn@%+Cc8FZgEf?0-1LV{+xxe$$N$Mr(`$5iUlKl)`s__7AJV3_Br8kQ$AoC_=w~6f_ z%cW&^i#^gw<{OYcC=P+lH!M3R=0WD$0IewmUTzsl!p0hy0vd{TNl$oRDE0dWYl zeu9i2mYxS0UjTVsUji9dmR*revYflx$Av(ai^(Rr?zey}pO8*cPst`}XJik7)-I6w z*MppAS@}uEZ;@V*PEs#{EKjn0S$>j!x7xRtq#Xdc-=ZMraZG-a{%JHeCeh0X%}RZw9B$d+7*!bNak~CwG*U2CYz+4klha2xPUe; z(lh@?#%E=dw1+_+2LDBouob~-F2&f zAoT#q_z=jvB=g2V<|P>y2N{=;PEt=wPe~`Kr=@44lhlVm)BC}4evBF+~Aj^>~SC)TLe)mzICnmOlj3*hNke(9LAp4n-Js^7sWI2-Mvho+iNs#3NAM*@> zj3*f%m!1IGucYj>*aI@2WPAo>+<^SUVnKRQc3JkM>+Pdsuc+EP>2JGS8&+K(E>X+We8-0y3Utd{TM}v~iG~l|3vw z53(G|as~N|@|R^#%68XjJV1^|2xNJZ462nb zevlE+Z7iR(vz~&Vn%vaEQn>%t?~I{VjN`NgzS_!EWIqd0&UG1Vd(|gMcHN9ld|0>H6EbtC(!m2X!}Y27LfT9 zvIjuM4}rEHK*p~Jb8g{N!}8}ryDkPfzlzc)#R|ys?s~NYWZo8#I?22V`IGXugUp+f zo|c}GJp{6RR`#&`1=&T}W!aOm-3@97XyXAgPYAT}kUs(PzC0!NfQ%yb>ezavMoUXuQ#{3-cKn}_nJ<P6{g=_K_@>F%?B-jUpYB>e%<_Otvk z`APZ{(n;Iz(o@n&>LlYc(n;zh^{jM~I!V1CyDUzEY>)e#k0Tiu0Ii+UW76Z&6Vge> zr(~0~GqOqA1E7ts^sMw@=>_Q|j^h+vUEXc?!}`oBjZ3?Up|#KS_UF{)GG_%aimcr(~0~dqKXh&PXSz z4}i?O9?ZGk{UrOB{WmghSaAjEB=w^7vUHOAq;&U1^#i0H1?@X^=`raE*(BpqvPs%$ zknPM!C#ere&q^n$4@)mdC#e^umq50oEI&!VyGiW@X@@{-uk@JoILP+2$e)m(WVxjL z?eeGOC+Sbi-y?qp(n;#W(hJf_ z>P6`#(AqD5S^i1+T}JH%SuOywo)E}#G0@r#(jN!uPe>=JC#AQ8ybdIJ9hd@Ho@87a zWcePD_aPaOevicJji+rAoGxnBNn)^cIl$6Vge>r(~0~GqOqALm=xTSzlIulKwns$BXoW z^b*MW%F;>3S3u@-U-9#UG+$;eOAPqKVgI!T?Ro(EY!$@&ZOmq6B6mR$jv-+k4WCs{rK@^}e>%tJCy3}ihd z6g)W=(}W^%#wLh-KE<}kforsmjtDMHsh7_ zS2DkaJWLvkb-hwD2}=Dzpq#I%pp1tcAe~%CCg)oiFk*S#h6^uOttXrT6Q25|sTYqn`q0emU*G% zg_7UGyz`*0FO8o|R9|kD(Ezs)^DD_Jjw?VmXQ_Kq`?=bF? z6`-_}roWPY2K4#`di`QPE0pgW(XRrfoKVWC$Mkj+q)nzkDJS&$!MICSGB1>Tn(@P+ z^skC}q2!InbvyyeewNZtg0dZks1&ISG{Z%0Ve7lyWZf70jpUucW_)%z<7%K&f|_apOtdt_4b7 zDEU&x%NZ9+JVRe7{uWUBb(pMtO1C5Q%7fm#2THjuAbuBYZ=Sxjp4$bbd=ixM<%|m@ zUI9w|O6D`n=l(`1SH*ntY2B_+;^p*(UVEUlx01{;FO+<81M7q0mw{5=B{R$mC2u^V z^QB}G^v);f)n|MXSwXHOv*Z@idX~opl=|iLh2p!Q^rwPMlPk$AnJ2C1*d8eLZBXi` z7#B+1VcaFtWCoP|5lXo%<9V`*d7vn|VSJD@XpQA7I%5P$MQ2a@t?0-4qLWx%}o?~1narJ^OZ;%$~T`!>I6O5OVHd#hG zVqPeDhw(|I zOJ+cC`=FG|GhW5GP~z%Eo_EqF9nvLpptL8HdR3rY_tr}~p8OjnpMo#>3Q*2lCG#uk zZy|Gx3#Hy+#;ZW7pL$uhFO+;aDDe#ALa#sctLUd*VLedt8Tvx;v!L`VPbOdGet=$i z`WgD_H6AC@CLJ%z@s1fl{stlzv;=*xuhL`4oJ~S2CXa8@>9>r{2)@g%U3Zz2m`nhVjFo z>~9t0LMd--XMahXEF)8(^jj$99mXe-E}14Xpm+R0DW7FLPpUWd_7Y?g^o}Pewt0;QiqDd#Zml4&vndix7{?d@WFWD=CTQ1Ti2Lhe+6)5Es@96E?WD1n+3Z+~*=$$9VGmPg!@48^TigC49$5Wu!4k+z7jJsrpd7{Yk zGcT095ubOoHBd1f{&qxI?;RB`D>DQqKC9 z_J!h?(-(?gMPDd>>Qh}_D1MHlY|_n{kJ9$uyY(z5NEIe3tP%sXo)~ zTcDH^O1T8%E}14Xpw}Mgwa0j#RG+gw&}$F$+GE@%9nvM!WCrxw2fg+g&y!Wm3nj0P z@c586nF6I9p_FqNcgafTg_2J*o+a~S6)5cpz3qL$?U6}P@CGK>o)uD<4Z0;OLTDDed2Hko2x zDESP1q4-twh2q=a=yp?}v@4Xj!+0g*La#pkD*B~Ib^Rph9am7wl`%evtRO2v@3?|e zF3tE#GE3$_DJPV2dB)YZ+#cv{50rd4eWCc)F`XBRZ-d@ENR~4%^vZw7@}O59l=3OY zg%Z!u7mA++rCgq@VqPeD^}Ws~NSjQ7(tn|pa~Q8=TiS=NVT&a(iSF^tK0j+hg1z%b6ES-eo*ZX2~2V?FhZ? zF|K~n+p|E)3niam+$J5e9F%fGZ+ncV$qe&C$!8hQlj=CP2YTBBz3nlcVq7Tk41J;a zRrH18r+(J$2*t0YFBE?ZDC6faS;f3i^2uLxeWCacDCJ$Ul6j%z(~M`y9P>iS=NVW3 z*6oyo-tht@pQA4n|1c=qGk#@x&?^s0K0{w9zV(~V3&l^-7kcICXXsba7kcG?*Y#7N z_?7g9;#biZil6*Lmluj(0ZM->85c@?3*$M)g%Zy*uKv{ZlA!FLQ1a#Uh2p!Qw4Ww( z%nK!N{l)zUz54Xa>8C-dpJ7}m<+6Qa{5B?)1Y@87|$@C zWjs$ROP8}i?|KBKeu}6g=YL8+f6Gt3LU_8GSd*$yc2 z6n&xi8Tvx;tLO{GPekNA|MjL&&T|Ts^B|PG!@N-PuIKlEODKLNDCLDxKFhpN^2w;q z3ng!ZtJH082_^4%{{FXwUi-|u^eaKHeb8&)%kO_H%e;z7drfx;rGCQmr|l4W+Xtn7 z67;t3<(uxXnJ;HvD0$b*Pun4s`Z?x>lDFczJ)!ssP|lN0mNPGue1^Wzt6#+Wp!g~J zLh)VDJMUzMd7gOf@l*7L;ya-9&n44j29$P%QZCDQ72`s$z52Rb3iR3o zz4pjT=7o|^GoB@@m={Vu*+91^6u*+bQ2ZQyq4;@Fwx=3uCPC@9Q1a#Ug8Cevh=%#&)CE|(?q zq`H#ZC$qD)pC{E-%#$|hkS>|_IfvWvc{ST3)m*km+N9&huhDs%RP$J#v`L3_$+RE8 zR+o3lG?^vyq`Hpnk~Zm(E}15?WS&&lvp#8)4(a;&`MR7NM`Mgp4HtCQqnZHTr)y=F&+N49ezJH4@=aTAH z)+24w@#DAYyiGc!>&I``d53h#G?^vyq;m(iPo~K%nJ3jkmLt<-mdulCkuH}YT{2Co zJDDeK(jl{Co>X_SJgFAbCvDOpT{7**@7CpAGEHX5JgJtjUD76H6_U*&os+ z(`1&+lWHB?C2i6nT{7**pU~x9GEHVl=Sk+tESV?OQ`{bzC)Ik!Nt<*?mrRpc(tcXk zb4Y80zAwl;W9YvRBCAO2SshP+a(`!&4(XC=Bl|5wj&CbMLoRGV0zbT?~1 zO{y1}CvDOp(`44?OS*iXbYEtBWR}d6D$Djsn{-H*Op}S%b$Od~NY{^V)p>_>$uyZI z^JHQh+auK*>AF?Pm@_P@B2G-K2JJtYu_c+ zF6}2sn{-H*Op{qMPddBV9+@VyWS&%exE<0a9nvM!WR}d6>K$F*0rB^gJF@hxz52Rv zK^gaHGQ)U|OzhKnn{-ImkH5$EN%g+=6QoO~NoT*#yJVWol6g{nz;;QOOn<23Su#(m z13I1r<+&|I<{4K9*&gYV=|gf{e%p~H^Q7~UE?*8xdoKM-`f2)E()w7JOOj4r*LTS@ znI-e2I;_iO$vmn4rQ-?GCLPix)4u5%Sm-QP5sCG({78;{5D+~0udjk`RVDKNd~=^R-_CWAU|7n)xG z95NBnzD+u$OQy*znI~0L*AvR$S0?BS#kc7T#dqktWSY#9c|RZ1`;#UU#oBjBmrRq{ z8r**}QCs^-P~Iz~NQd!C`f2)B9bGN~%Ju7zImW9<>m-%~y}yH^Z`bAVBwaEKN_%-S zT~C+Gk~vV0OP;<}U;9bY24y=A>5^$OOXf+{K$o{khjhs_nI-Lpy1WZMrmonTrms$B z9Q5WhGE3%3)kx4oap5Yp=WjxNw!abytFMp~Qu&RB*S=xKQFk{GapP4k*`! zOQy*zX^-IXBh^UlCrF!gNS92L>TH%LZPFptDCS9&4w;^+ z^Y%1NbqULp>Qefod%5Y|Po&AjOx7nIP}TvLOp{qMPpT_84zH5=+}xA!*l15;9@`@m z*U=|kQeDq}kv8d&t{5^$OOXf*+8|#xcDA$)mrf=u=7s~Z_+MWa`-(#@p3&qdU7mA;!FBIQhq}xf8)?NC1 zx{FP9c4q6Iw8uSrvL64rC-3o_J?d`B|G6jOG4_t_vEDoBCAz&VX)o2jdmnkfrg}g# zL8i$pnfLP#>T)*ekS>``%l@~0N3GO!NcD(5e)cL|-yzehO(nlOq1I?7NSk!XESUqn z`{=d0yiGc!OXmIjqq>|!x@4ME>zF59GEHX5#ACXgOQy*znJ4YXb-6T|CG(_uLg%xf zjGsKIp5*Z-ZPFn#p!Yc${XD6jVm;C(9nvM!WEPa;ZLimKp3(JPGEHX5Jn3v?IWkRV zNqdv20{DN|4w)tMqAa?WmrRpcGEb`4x!V0mHv`NSJ_w#s>X);UZN%aAb8<{4vr23F~ z(k30!CDqp~M>?cSrhWdZ%Vo*LZ`!v>hjhubpZ{H#bI3HACG({EgZ&^YPw4ym44L~I z<@0Sz1-$1jq4?$Wh2mGy7mDv10q?r11ijDKL5Zgs&w$=_L_beffl^*5<&~-1u|O%G zpl_27>5>U6;EjKqbjdWCCG(^zVELG43Y6_Q^wVU9@hts3sp7g`g0xA8%#*5!RSu#(m#=3qg$$pjT`WdpS5BFz4 zzL02YU zp9JN-K{@>#{p8s?UP)#~v0oSSx&r0AWa#HeYbwth=$$wEm1LFgPt)acWEE*$qU$9= z?|lndNoJVO(YG$u<;qEGI_r_;WF_eJmwt}4F4N_cpx0mem1LFg&(P&^WEE*$&i;a4 zf5}QR!+eguHB*->C#@@3k1QuEL9f5`bEGv(mrsITf9Y3}Rla|vE|(*#NNYCx3wr$} zE6EJ=Ir`RBx?DMF&0#$7JelBO!$**R>U5OJsR5;+ZQ_!`y}>R?CaQXv3UHnc>nnM@u~5<;?KojkN+6&Uo^C6 za?t}tw-hfbezf?5;&@5(lI|tLOU^GTFR3V5Tk>Mb&XNyH{#A0Kq(P0+8ZBy^T4QjH z%W7O*BU9t)8qe2wqsIOk2WuRyF}UW1H7~FEXw7G94yrY$*3GpZs+Fy^tJbfzg0*9{ zd)FRW`=Z)2Ygg2Mxc1Yvx76NM`)KW7Y8Tfzx6Va%Zm6@U&SQ0+t+TbxhjqTMQ}d)= zCyhPn#gl5)ZB}cm5dOya4;yNNFo#}j60th9M)uhRad=agPidQ<7$rE5xemcCQEzw}_~r=?$(9xE+r zTH3UI)9y|CHl5gXO4Hd*E1KTcbaB%iO^-DFchmaK&TKZI+4yGXHJjCJL9-W{sbpcY zQLoZ!XS`TkMuJy&OD_XB?y|(qn)>~TVTOVnCto2{5 zyR;eDW>lLi+uYJ-QJd%6Y-_Wl&Av9DwK>)%*tS92(zbKkx^3@jyRPk~wx6~As_h?b zi`&&{*RWk_yEg6Yc5~X@((b8to7;WZ?pV7(`vL8zwSS@g-u8#vA8T)PDCy9=!;lUy zb$F}8z7B^v9PaQ{ho3rxJ5K6&L&wKEZteJG$Kq4YJLT6?dUtxFQ&p#5I|Vuycka-6 zeCP8zPwPCZ^8=j^cK);T$Sym(L{6Q4>Z7NAaO%-ht*$k?cI-N`>jhn>cAe4n)~>6& ze$e&vuHSWSa$4)tx}DbRw7#beJ#E}+=bbjH+j-rt>2^oAwcU<&`?Fh@(|eyj==6V_ ze(~v7oxbAq1E+s+y3xH}_p`cR)V-qnlJ42=+q-|z{j2WA88y#naYnl{x}VYejB#hY zea3HROz&}RkB533>tXjC)N@SF^LkG2d1cQ9Js0=9x91~0pX>QX&-T6g^%~Rbyk4_< z-P>zTuh)9*?e%4^pL;btGkNB;GcP~0^2|MFesSi{XBxfj-qU;E)%&U5ANKyDcgSvP zx3W*OZM(lc(VlEyW?yOFVBcpyYwxqawolmMvL0pUm0enPec5eg_m-_FTU)lZY;V~& zWq*_v^ojMU*JoIt(S4jg)B9Z0=Z-%2_F2*A$v)5a$@eMlJFV}PeXr@8?i){?oH{*a zr-r0PrQFm#spnGfr#?-6owEAX>vw*?S^YBoa{Z3<`=eje{yq8+>+kfR+rP5^^8V}l zzuNzJ|KIx;4`?``?|_R3Tt8stfb9dm9AFLXHgMd)s|PL^xN6}3L5Bx@F{sJlPJ_z^ zpEY>g;7bS38T{9kOi5njy~(`C!P$Lw+98c<8A^%Z8pibjHv* zL)Q#_b?Ba)Nvf;N3e|z|$;hzt0I->Q6o+HMMm@%Sa#LFXgkI0YsWyBvN z;v-v*Y(KKg$N?iqj+`)Z%E(zG=a0O3XdvvbThV}2V`IJWlK24kCzZ9R72 z*ePSDkG*N^-D5Y5ePL|fapmJ?jH?)T$GD~AHjF!Y{6*vEkH2aB9pmpG|M>XL!ukmZCLEpc*M#uI8WT^O*ni@PiO$5ECbmZwfCOBE;^YuRiSR=24_b-TR3Gm6!9Mv1!7sG)8)YT`>xwbY$P9ktjvN!@KUP-~2a z_`vsM^>3pQ*0{BumA4ii=^($osni?olsXCQjxER<`JeI!Iw^&!N_ZOh#3S;ZW2N@t zyIJBNT&R6Nzn=LFwzJLD^`!pV3k-$ZfdAro*Xiv}Zmav{`#$eMyV5T|FW(Il-_IX; z9se@~erGfuF_c==75ilbu{U8HuR^TJ%YTf=CVA1Jp#c4k9P1VpR{(`iM3} zw2`W%8Y5b&>Z(@Av_-TXypF1w>Y|c3N-eP0t#B@S<6I1ej>7qvp!z9C4O17Xv(ywd zTwSb2sA+1Xx&ak@9M^>E7W*3OHEYQDfu@D=c=34dHC7gNqBC$K;5e@R7+9w zVKr5~jheeqYqy%N_M_&9Y6kus`*QW2nu$M~y+ZwhR{o9i|EszN`#Vp?jcZlHxL%bS z^YOKBSG6-LR43yGb*8aE*+wP4YJ9WmZ``WJ7`Lf$#_ejNu~0e2B6Xp0mzshf?7i5y z8((`}qAoS=QI{F_su{*ob%k*szH)lMnr$pobByKcYW(o)JmXcY@ioAw)a}N4eC_UOjJ^#Rea~X#ZB+Lg&#M*2CbimlK|N=@tX?o)Q7;*< zsvX8_>Rls?uLEpR9~-Z$PmQhWOCzVgF}A5cjW?7sw=2VZQx%vyRH3<3#m(KS$b3iD zF!!mN=6mWS^L>>tKfuR)AF4Ly0oBPosJfYl)EVYS_=xIb)yw>+>TQ04kEimgpLtjf zH2FHOc%=m7CwIi_IU@H1kI_ z-TYb2F#nC$-@mCV&EM74<{xT-`6pg4pHR1&%2;Tc#+_!sSZo#;cbh?DjTti5nuW$X zGip3$78_5RCC1Zc4dXeprm@kiWxQb4HeNLA7_XQo8Lygkjjd)qBWE@+wwVo$x6G4` zcg#k{UbC_BuGz%cXC{pI%~E5(+0-~-HZwjllg7tpbK?`Ug^@Q~8Hdf*#;0Z*qsr`T zd}ekvj+&<%KbYN(Kg=G+3A3kB5IEBa22w^S(9Z}51{#HdK}IAn*r*X0V$=!@HBJf) zH|hpP81(|odV@Xx4>lM^uR?1?v9Nf zfs2ivflG~Efy<5Ff!RhXaFx+NaE&n_FwYnmxXu_HxZW5VaE)Ps3S&gz2IK6&0%Kg@ zMq_;7CgUH0n~jSCi;QW3JB=BE#m2nA-9|-ViLo$nudyhw)VM3~fU!8R%(y$S+_)$3 zps_UYka2(DVPjd~5o1+gm9aXo##j@0)Oaqi&e#}u%6LAo-q;-2V7wT3)_5hb(Rekm z$=Dir!N>(R8`}ae8gB+(GTsWjZ0rcUV!R!A)z}qy&Db5t8hZj;jJ<)^jSmBF7zYDy z8XpDTGCmKyZ5#>gF}?`AV|*FdYkU{jZ~PEAWc(QTm+?#BGvn955#zVOSH|ywuZ=$g z-xz-d@Z}8am=Um!8$s(ABW(TKh*-ZG^{n5FM%G_O6YGT0%nF#TtOB!*RnKf|H8k5> zC!3wEq}k1CVWzCsW`C=VInZir4z_xkL#^KC2&>FI+Zthxw$3%jT8=s1nq*G2E-?RL zU1*+XO*I|s67vGUTr;M&b3yV*H{^I zp0(P%)>>m;XRS4_x1KWRTkFjV>uGa=wZXj6dd|Gfdc(ZK+HNki-ZU3kZ<%*mJIuw_ zPIHO1%e>dxZQf_?F(0s$`tvrWet1%;OYhX2kKbYW8UAv^@L2bD9q)Ff;gvf!+)%$E ze*xxX;hcMw`U|Wah3B!Sl*)r)u)6=%0$u;TdAfcKzkeay?a_tp?a}@|{H}(?<^MFr z(au%Z=z7B*P^t#}hWBGl1Lw_E>SVCjYMq}*4(h1;6+K0>lDv>SMs^_m{Vu}y5u2ht ze}CV;TB%m>&%4S{?Z5|W8|oDB+dHr(g2$Wc{%tJ4>J9&|LrV1lJAbRxK+wKaZ~p|2 z>sjzWEi}CSnS}Ug_<=k0e%^Vj=C<9M^RUp#es93v!%qZj^ZfL~{>pJVI>k^9;(KC- znhgHg-cZxPALi)%=>Gb6-ZIcomm|LEBJCdluYv#7=SsQYh)P4<1TF*b09)gETF&R5 z^9^-3{8!rO{{M)-hnIK+zn8Hb@m)AhE5SXJ_5Loy^YvQz|9_9W^!G`$Gj4*RHi7>d zulWj&>+A4eJE-ZOucPnlHls}`u{E{{TE;QFO>ctl05n??MXd3-^0ga(%AV`TM(Q?qGkrtkC72V|%s1f1~_MxCaZYSL#0e zZbcz@eJ4W|gC}>^ypGqOzrE_)@!RiMQ@7s{-;0)U=(kq{U;1}BzW*)pBewQ;Jf!ha%&<9*a+xaLv*OO~&N^I8gj?|MVE0iRl? zR2Oh5j_;Y^*qyrF7JGGji_SJw3h@&w4K)mu?Mk`bH|qXvxJao{@ISd&_xtgX=BcZ7 zzQJdj6Ed3PMjC1Y%Fpen{es21za7_Tp0ZV`^O5(DTiL6+A1&|G`5b9yb=*JR^FPw< z-8MpRzd3mVH^6dy@3~CZuf^@Cur9ajHQYaAdmmk)kADUI)i^#=5ueBXJ6Ngr+Zn9e z8FsnmL)(;^fpS|g4rYUG@jFYhy;dDGUG`)8lX`n4lk|3e>ZtQId3=88rSq4P{&-%^ zd3FP~C++(4Rzt2QH_X!Qy!*E1eYJGCA6S0lwYs1Fb>Dol-u`m@-poAoSJo>zpR!&F z4`E&w4rs0!7^d4BJxAv+epJ&x?mvI5x4WXFj$iPNQu15S%W&OGJ9DRMPX9!g>%YYC z#^1ovy4|lYR_bPyTYglRYyX^~7Q%mx?f!-HE#vh)l)oRWb=QC2pAF0Pb~`QC>!|sF zru%|!uRhm_B@6Vpmid1r+8K=BIe7y7X_~Gd$Mr48w`_@~KMo5y{-&R&x7!lWZqK0J zSr{j>&SY?1ya0a&%gJ@}Dt!O=)R}0g9Q-c5b^X4V7-|Rn7PzjYe)|oEdI!FLe*FC@ zcv1J`rKINIfbQoeUPm>tZb*L@;XDaHB-;+q@j?AGcbuy8dr#HpeKX^aw9xVI$&0({ zd@oYgO*wyZy!L}PHOD**`u+P2>$_~XHrCA}h~M>_UT^*Vn48x5N8i)jitAkNi*n!T zb+GT#dj05x2V}4R4RwD3b;zQFt< z=M49NSZzPnY%4@w%8FBz`03kBQ_A#H1a6{pz$! z`>Q#>*=R?u*F3M=DWH^>_S&NE&zBmi6Ig)#llY}PPMv2M-ujBiHjjS$;`c=PUF-C5 zOQ0Xp{=N^fmLtCGPTk)ImcFlS!ufkN_FLxlk6Y{Zjts&2h4Pg=9=G7QNjqJz-U|JG zjJw)U<5A9^cdK*YD!sq{_`LoleZTL|$0Kn+e;(?0!8$F!W&a@7pXuQJ*q$8kf%|p+ zFCWpA`@psM+rEW+3xpNG)7;KJl zD93eeOGB-I@8|2`{#n{vj`-i(eHinTw0m_K&lBc(@4Vcpx9@Lf%+mjU{k6PO_rLo3 z^Bwk2#;bpQO8*~0``2_Z)T7|uk%oHef7qUX{rcCVKY#i2m46-k*YCBsKBb@j_35v3 z{yI3H^V+nlbU*!h%AbGy{qnC{|2p>PIe*^s`{nn?pHHjz%b$P!{`vE&KacwJ_c@%; z{rSe9#|wG?=idj;dQk6Q1t{lhHT_S^4Ye7^?`=^27lOZEU*X-J9FLox!94=vb2sU6 zc?#KNnZAC$;`8R`n77_Txp|EH=htt?ukRlxKkv`KC0w8H=6%z`6&Q0k@72d=^?Lre z@yCZ>UaljVNBz9~Uasu-b==On>4rLp{>u3I4D{<)KR?ySiGQB_anf<2ZnrVECGC${ zr+MEkn*KN%aE(&mVLR8b{Fl6+NO0Wy*SlQb(vH6$^1R^rxDWdo_5HZqpZo#e&-?Ws z!#XSHtv`M*RQLqeS*hP1zA*E=q09}MVbHHv<3WAAyQAMyuhDMJXNT(fV?Ecg8!`T6 zeU|$mDK{7EgizKWVQ{z}XGz@Oi0{{z`+V{JcB{ANm#ZF^{uQC0hu9Cl+|RtP@XHTP z>-PQr`T6)L-4FkIn~38r>+i?7K5G9D`|qD8|2$MbK7HTO$I*YD`cLI-&WqLa)qQ`z zmT>?4e*dTVao$fpzgX|D-@j{kAMl^*`Q`lcT)iKD+;9JGJYUQCs$Ng7D_IBMU7*K> zJSWO^=9jzg4t>1+_Wbx@_SfeK^jF&V%lUDi)$=c(qRZbx{^08Kum`@3>;KK4h;s70 zU%lLtVna2+IH(@4?)%598SYE}r{m&}8-IUi&C>ny&*zQ2Uk)77_xbxde*N}t_+7WV z^b$iQ(4WOVaox!A_3zjE;rf>S9gOFkwkYRs&p(d-_GF%rey&-n8R7d0f4%b8PpN+f z+BxH4UCv)G{O1IJzVz3d>g!DP`O#me{PoMf?)-Jme{S%f5B&MmpLeT2FZk=5e_i|Q z=${L9e?!;m}6c}LyeGR)KcQU4I1 zOT&E5YPm({Pw@G;`hCjT@9Oiq2KUKwzcrS}b5qCvKF%N9tlRO&%TmrK{=8ECe9lHY za{hhR*{a*Wx`m;JqMu)&zUhFh)1KIAhyY+Q0ak>Aj!};DHFE`cu@B8;L?ki=x9TK`<{&U4&!Ci97%M``gS~eP3MtJ?^zwk7U39{vKEQ z@836DGY$0*wA&x+!(>pd@5{l*Fn*-}{&UT&0fw4`_(v&2EnvAtpwwRiN`2wNpOsnx zUT|E~-%ck!$Gq7H_pQiRkIQzSK-|wuyU)Uxc3=4)%KOJd-Ydv_)@8Ro&XpG%YCFm| zzmSTB^_M;3fJz%KH!RxdHEU-$Ob7J&L?9k>lmRzxI!}KTlMTUyJc2?{WR@ zO~yQW5bb^54Das1p(pA0yqB)l<@Q>dBeBkXhPEkDK z-XEX-c=gAxjBj~wDbG89qMrY}`Ck9lV@|yGS2+xGygh!?k&9^zQ0`Qh{j%x>$>-t*oe$0cn zg7Q4O6qNTItH4+LYu|tW;m>PVwbRe7Gl%Q-r4a9{o<{j=@gC^y*RGx&;C|_%0d14RwJ}8?f9Sf$^FfDC>LCTIOxwC z|J!`#m#fbIG!Oan%d4Dc_g|sUgI|BtAVYqzTh+sHje)aqearRp(O^T>h3|jPc!2q) z-|6?TA@T%{gY1|8x#@GfF8ulTWws;dOXj^7-q+-&u_S{kYn+xu66&Uf0O^Zw`I{^#!gd7pg0J}(=2|G9?q zyMG@v=0-!^hW6$j(DQ_xCwZ@b<~aSn)z3>@-b49uzkDIqekp$d?fm^dz;D0i&3b+H z?+@g2NttK-&n5lOF)zk=k>}cxUG(|=zm{u(_xN&OyB6=g?!tb&2`&Zw=NbQb$^RUn z`g~FS`N@B7@}Hyp=bom^bid_(VFlV>g!^#Wk1jl}|C{f>|GgCRtgORz$-RH+{dI4` z{VCe@k5hHuKb~^G`Y6iDeb@TGm2ZgmN*m#K$M|@Sd7i)dSppX7gq?;oG)$FI6S7T4Q}|0*9=OAJ$$sC%F$ zz84z6_d*w#79y2U`OatoA~%{rL~er0Z>NM1x!IKOkKO{6zg{jxIOZZ#(!h^&X2s)K5RJExA&u(sYo3bu5U7do;&w&+Y-m{RsCgRVJE1t&MmI#xu6;Tpqo6p~Mt4Lm zuX6?>God)wMh|Gr=mm`%y`e=$8T4MGFLbHV54zqM0Nrm4f_`8Ofp#&6K~FV@LkF58 zp@Ym(=)+*BsfL(iU=M|wYM40=_E}IP8#=I5weNa=~Z{8030jP<)w1u#jLrt~9yc70=P*bJN#jsaGP5eN>64L>Krb!W3!PrD4?3gZedrYhA3$dp9DrU`a0s>LKuvW^!N<_s3O<3}UT_$C zN5QAir3IfsmlYgA$>mTShk`F*KL|C|Lj_;Mei(|QQE(LYN+`}k!7BFD#czWY`~v%NsHvVP_!ah(P*Y_KeuupUYO2=@{)D|1YN}kp z3E119rh22mFz~hrYO1#i0L@q0Z52&uQBrrK2yg1sARsyzjTu-}22YHvXl_PbD1 z?JJ1Geh+G@ZwiWGABCFg+kzUfk3miKT|q6_-$PCHLqQ$bKSE9QQ$bzW$DyYBxu8Dm zU!XWI1r1^U3N_Vl1&v_;4mH&u1x=uT6_g@!0&3zBsTphoinS%!9CiR|s#?L8uxmq2 zRVUaQ_DN8z2*I|{GlK0A=>auW&tON`y`ZK#GuR1sZ>Xv4U>DeBP*e2@c7@#+YN}MQ z8|;2iQ}qvahdls_IVacy_8_RK1_yh=9s)JhgkW#j6QP(Tf@QGJg<_Tn_Jw^u6thII zAM8m`%o4!?urGvSmIw}lJsFDe85{z83KVlia2V{VP*Y9Ahi!(s1d4GR90{Es90k2B zI0iZ+I1bs%p{AM{oB;a@sHtWJ&w+g<6r(zLF6^tIrkWExANJKyQ_T%df_)9tRP%xt z!oC)2s_TN2VP6k5)%@TT*e=vm6~U>nZ-AO=LGTjTl~7aN7@Q9KCa9@y4$gpm3)ED% z24}*)4T@_gI1Bb2P|SY8*{~NuG5ZDQz`hG=s>Q*%u1s}svxu)b`WZ+P-rdeFcd3hXdUbb6f0xsao8~^*2K`0(BjZ~ z=*giCh&O`bekSxR>?TlCB|;lvmqIbChc>}(2F0u%+6=on6tjBhCD<*YrfL;>1$JvF z?q@=;!EOsRRlCp@*zKXXhY4+k-4SZ4Q$pKdcY>O#b7(v4E>Nt(p|@ang_`QL&`#Lh zpr$%Kv#x7Is$tt6jxK| zOW2n{aUF%ehJ6_n*HP#w?8~91x+ZiC_B^PmZU}u3y(#n~A~!>^B7}~^z7>jfA@mFE z+o4z&LchXZ2sPEB(C@JCgkoh6{Rw+96f1k^1nebHtn4Af#L5oEY7z>-z7L8uB~$== zITUM3Cf`PCKPK*s1)`N zDAtrvGuUrKv8IHY!`=4{ECSL+xSjhvH5z)DiZF zP*WWUb%K2mYN|t_F0em>n(E_FSJ?lAn(C8KH`sZosSby_!~Pf4RG)@=K&wK%pr3_$ zBmOzmR7XN(u)ly}EerL9eH4ndEYuHrEHnU-@1VHH2n~Y$0~Gfdp&_t;f?@^;4TJt1 z8ji>>P^@L4kbTw?gqv6 z7@iKhI~3Prcn0hqP+X7UnXr37aXp4-!R`$;l^vc9y9|o!F+2x$Uns7}@LXuW@H|BN zLvc?Sz79GyJRgy1P^?Yi3fR-3SewENV9$V>>hkc7uxCPXmleJl_AIEWt_*f&A3;)L&oeG3#TPWV39w?VPu zgdc!?2NWw#cscAvP^>uN2Vvg@#flSt81~&ztT^G7uS(QKuu*8?u1F4!R`)|$dSuuGu0k1E^?yFS!Z4GQBm$g&)9f4#ns#JOH~56r;EB5bSnPQ*|o*7 z0KN?j#l1nK32YOJdxJ;=qp?G$Vw1gdn;(0mJ8g?9tdxJ<@ z*u_x1cZsxzT?2~W%8GP^T?>kPhDayaji9(^h;)HAiF8FI0X0==q#Nv}P|Prq?yx&T zF~dZ9!0rUa3=`=Ey9*REOr$sLu29S{kuuobpqODIePMTpVup$IgWUs)8749Sb}uN- zdt?yo-cY=qhzx<<2WqOmkzue?P^|Ki;jjllF$N+dVGn|0Bt%BR9s)Jh(8w6r!=QLm z5g7-2I26zLkqNLzLh+0rIS2MAD4y{n=fWNX#WQ~7eAwflxQmEPf;|C>XZ*;8u+M?w z?maRY_PJ1uuE-SF=R+~GMW(`@4#mtCxdiqMC}y_Ebl5YYnAsvTV9$bLwT;Y#y$*`e z6`2M5aVVbPBC}yX2{qL-kvY(3BXbdX4r;26k$JG6hni|rvrtoQiQEkPbtpz` z>>W_dPLaj1--cp#iY$S>8;V&daxd%;p_qjt_rX30HPuIv2cREEmP7v;c@X+Zl2~u+djwH-=(7M_+@TfMPsHx4>=+#cCVf3OfnKY8%}Ky9E?uJGvcqCn&~t z^exz3pcvcHov^z?F}9<-V0VLJY)ALN?heJ+j_!rs1By3q(S5LOD8_U2eb{}V7|+oU zV5guM&(Q<02S72NqlaJ*f?_;JKZZR7it!x%1oki}#&h&A?BP(1=jf-fM?x{4qo2VZ z1;u!d9)Uduit!x%681PK#&h&**b|@_&(Wi>&w*k*M~}fi7mD#5{T}xDP&|!Be}p{= ziu>p2ao86^F^fijfjt?DSv2}9bV2lYL@J?JbEAL4z6pvoH+lm0El{kpQ3Ibg-vPyX z8V$g{8;bQbS^)bVDAv_p2(tgU~hopYKqo{{VWtKZ?rz_jZj=8(T1>Jg<`IbHiEq!YN|J* zO<=zTHPw!2DeRq4+@nUD!G0HNst=>hVIP2+>R_}b>_bqD`Dkm{A44(bqivy|M%yD& z1;xxC?FjpGDCYlYC)i&=P4#883+%6;rusVC74|n!Qyq()r4L~FS#abVe?*bG+vDU|i zzz#vN%EX4jE`(y0i4BJxg<_S7jf5SCVwH)Fg4T(RLF6PTuE*Fo*!7^MsvnyGy8#qe zXzU!=Cqr?C#?FN{j-8K46R4>Yu}QE?p?DgNT?lO%n~X>+DDE6$Q((7&;?5y96?Qu) z-mb?kf!zUWs*bVguup-Ss#|OZ?9-v9>K>a3`wS@FoX2Lt?g_<}7@G|{1;y1Dn*)0g z6jxttF6<#t+)Kpf!9E*`cfzsjV2_643X08#eGU{?P^<#>xlmj|u?4Wthnnib*p0Bu zp?FgoyBYRHP}~*AZiRg@6stz;cG%OQST$k`Vb6eK)rj2*dnOe3z_G=!XG2YOb!-Xj zxllZT#_okZ4{EAwWB0+n4r;3FV-LWd55+x9Y&q--D4t1U55m3`if7W;!?16M;+ZtI z681tUuE*Fa*!MtjJ;qkUUJAwa7+VYbekks5W9wiqgW?TI>~Yu`DBh67o`k&yiZ>*& z^{^j>;@wDW1MH`vc;6d)7WOkx+%Ls8!hQ{kca^bCu(v?*t}?b6_EspayVy&xcS23| zPV5!fd!eR!H})FreNe15u`RF<&PzO4}ju&i5vLTe-IScOFRI3 z2o$ST9IuSkFet`T@{o(1BaV7~&z*p7FB{TdWwJKh!c7AVGcyc_JTP&^~VyTjfF#kv#k0ed?X>rT8E z?6;s8|MA|icS23|cDxMsE-0QR;(cN7f#SM|_k+C`it8di0QNqpsoskZg1#Rgg2;X- zR-*VY*q=c03=$s>`!lGiK97%teFTa%B|ZxF4^TWC7L9>zK(SsFje{M4V!bGu0J{K+ zab9!|?3z%F^P+QM*M?$6C^{e7plA{z4WStAMHj+u1jT4Cnhd)M6f=L(6xgLu%=1N4 zVYh+ePORt>*qxxb6Dyhyy9*R|Vns7xcZFhZFPaJa3@GOIqFJzeLNT6;X2ULnVmuek zf!!C1@mw?)c0VY_ZP7f~L!fwmEV>RlqG&!MBcZsbDyo1z3W|HGq6M(WKygo1bR+C> zP|Ws4H^V+3iqT$lE9`P8o+yiMhdmXFcZo#{VP68pY+rOI?CDU9`J%^Z@K@pcwx}%VA#&#rQ9J5cc&@ycH>W7`6+=-B-~{ z*tbA2!xycBy%37KucFnk?}p;)C|V1985CDX(K^^Gpt!RtdK~sDD6W*ECt(*2RaBZ3D$~aq*|nUd5k5&n!Ly?OpsOvNjast@vx${h*jXi;qGF z6d!{QEdCxksQ5?d;Ns)ZA;rHy&n^BHdS3DG(DRG`gkD~J0xish;`y=I2x7Dp2cTCL z7eHqhhoDy#7ea3;jzVuMjzd=z7ek*Yu7U4{JPF0jQ(OzWwYUx%)E%if6szhOl=)@vK+e2=?1hJnI!VfxR1wIj6W3_FgE?RBXh_Fd=eB-B_;h}UkJrhNyz}%lc9JjDH#NN3KUmj$q?96p|}!DhCyeQ42ND> zG7>tsWE6B>$r$LhCF7vil}vzMUvds~e#yD0>q7C4vE+Q{4JDJHi%Kqp-dQpkdRNI5 z=-nk#QE~|sZ|qAhf!i&+_&BSo zfBcyz=?1NBl4hZ$NlQyxQ%JKfbR(H0ZJ=#Jl2QudFqxU8V<$6VX3{n)D54-B`ig+8 zf+8S`7Eu8ego@Y~R1^^eMfOFM7u--0k^lFcbMJkgndh0}@1IYeGxwfz?(*E_+;h)e zo_SM%KbZFs;O_;*crot`z!&Fz4Dh9SX92!E?`%+C0ko~(&-)bIuL7d|&pQ{es^mPt z!%8jyTv&1;sD}eWi!S*b;Hr|(19KE0^oNo!z+DH3R$6ii+{Xf9ep>QHxVr!$2}>>q z94WaHmj6Jqaw9P30isQo z+ywUpfRIHcx4?ZNAWE|2>u`S#5O%hbeQ;k32raSXn{eL_2zgTSEx7Lhgghzv4%~ME z!s1bKC*0oyL@O=%F5pi~z7P1bl6wFjF1Z)*=Oz0Ae^GKj;3Fju0RFP%0N|q~4+8$G z0IN!00bEe}D&WG>KLQ?J`hS3nO5XsiF8woLP3d0&7ni;X`2Ny= z0M?eig>+W|Vy&(8ZMcsHgoG)52kzB?7!yn1g}VU|V`6ClJK355QJbYjfX9|j1MDot zQjpbEItwsZdMIFb=^VhG(z$@Wr6qtHOUnQ^m6ii;F0BOIQhFF-+X`q~;nIbGA1Pe~ z%tryyFG_3RJ`)hVpmYh`X9J>^OP9iZ9w2JD^hmfb07Na9u7LYOK=hH)_rv{pK=hQ- zRd9a+5W7=KkB0klK&)q#u7>+cK(vI?2Dq;UL=P%$g8M6gnB$kWz*ySm`#v$4j>Z{{D@NEPU{Bd4fW2j3MA(ghXlZ4a1NN0&33y!D)qq>dt^ph<`!e8Q*>!;1%B}}I zvFt{`?PWIso>WG6{_FsR}PD z2S8X+%DxZyTG>5-e=55d@XuxYLH!FL%C_u&xc>$Sn@QONaQ__;md3IJfd4Fe5SX_B zF&`}Z3EXc3!a_3tXMhXm{~WM-{v&|P=06JRk${l8^B)6TG5^^7DTS zxN83I0FR#k3}Ey8=Kx#gzW{jZ{FeYT^IrkX&VLo5CIKU~ z@JsXm40y}@zXIMq|4qQV=l=unp80P9{%HQ&fd4!H9l!_YzYF-Y`GJ{e!}E&(e?EU2 z;H&dz%tR>xqLk*(g8MZ<*qY`a3b>$r4&cJ_xqwHOmjEs=F9TdrUJkgjyb|#J<%a>* zmM;WcRlW%DsPY=XX!#Pv76Zh1QN9%JF+hyP;xUpdtb|uObFa2_X7x#TeXWfatRoak$F? z(Pt}m!CeW6K3g#k*jkYSrVS7?_lna2J1R1O$5c!LzXlNV_liAmuLDGXteAp(10eci z#Yf=o1Vn$VI0Nn=Ao^p)$KdV(M1QO}3+|18=#Ld=!`%mn{#fxTxQ_?KSWs~;;Esy( z08g&C0Qge?VY8~Z5O8P3=KvEGp9dVT_ySBGg_X3_$xgYS<%KHIFDjxtGt2_X>v+_Z} zc;!z3KUDcMz+II;N8S>Eu%}f%0{D^2M***_d<^ia%3lNCT=^v6BbC1ee6;d+fWNDJ z2Jo56=KyC{y#P3;>LtYUK0s);Rj_Y{-$ab;BTvr27IY%HQ*~%4S=sz zH37a})iP_H^|hJD6s@yvp4kidjhT)1I_vhC!+>|p+zt4>nU?|nVCMG#e>n3gdxJGR zYa{ODePZ?vOUGc-yA<%L*_Q#HHs@kj0jst0#YGQU zNx+|3=T|cvIB zu|5j-Z>%%ne#*K6@ORd&fG=3phrPJyC2Kw4%hpMUJ-g@?YbV1G0rPt+3-_zm`3ye; z%pa^P;Qpg^GvI61-3)&K{Qp@$g8Oyr3BWh3X953g&0O%}qPMIQ7d*S@ZR;w)cdVCz zfq7=(%YgG1{(g}i=vw$JVE4io7ZnFif_qxvYYQ)4K0WY5U}gk<33zDWeTToe=zW1| zzDqGuN^3tR@+64+e5&1wm3t=<6mf$HsmAFSR1cv|%- zfFsqX0!FJtR%;+p9R^H-vpsMF!#k=YR!86$aIXp2HM;s zuQ{h?OW+CI|Gy>ho0{_hpQ`x`;L|mq1$?&Ve*mAaxd`yZnu`HnuDKNO_cfOR{-Ndy zz}IT70(`yZOMri>xfbv*HD9UO7MQ=d!8#>y+~N-wpBDK2;x*Pt;6IBe0j(u_0PQ7H zfW=Eb0yuri8GtjFd<^iAC1(N7UUD|z`<5IJIB&@Yz|tk30-V3(T)>JY=K)qNxxk79 zmMxhCT#h&+ft83e5~xL-k-$-iGZLsnoRL61;*10u5oaXOj5s5KR>TzNFYs5{|6X-G;D5ls%)acX zi~z1qt^x4d zbuEB*)Wress_Ov!9{6|JPu1-Ld>Ww=_TPa?*#8D~(mrl=25|H04c1xqRjV5SzqGmq z@GGm^0KdAr1Mr5`YXHBtdL7`+;5^&D1Dt2ucY*V4`+K;q=WP3KaGq`d0Gwyr_pSaM z;19uhk^Rrr4=w$I{cpgFp%6c`^b)%m@KSpw;1})LfLGbw^$plb-&@}TxT*g0fXCH$ z0B){d1Gu&R3xEUl8?0~GKL+PF?EeMlH|&S%F9iH4IKN>(49;)Zzo`El;4i_s&wd=7 z`|KycxzBzYocru&!MV?V9-RB^7s0vDei@v%*?$1%ZT4&6yv_a-IB&E60?ym)zk%~M z`|seq&Hg7iziH2GSiAf|`?C#ete@C70RGJWc0(KB9qhiVp#|>mH8cR;-Oyn@Z2t)E zhwUE&|FHcKI3Kou%J_%D|8x77p#I$c6{tVApJ=!Q@He3T+jN7D1A&tQ zu|PWTk-(<|p9@?XxH|CFz^#FA2ObLiGVomBkAZ&$D(xffqwN;E$HvJG`!svEeYSnR z{dxNe`#Sqp`#bgzZRE;+-hSQw2aJKGMb$+sit3BHif%2sujubZ?ZxrpuNHr&_|f8* zikDB@G3^7>LenmtcFnY(Osk&WJpH57zdC(%MrOvvGj5#m#Ej==bk7`{xqs#_XTCdg zVAif#56^mS)|;~y9)dk3hdgn}bBFxlkiQ->>(KWfdc~o)AA0|xzdCgG?CRMav%6-W zJNtXH51W&nbMBm5=DalLnD-66?*s4q#QS>Yo;LT|x%=lnG`D`VveJK*9$L1%tflPCvPhP}r0T}1lMjm@wqZg4g7F2fEcnxcl7-a^Pgr=`!tXEq;lhU(Mi0*%e!=0_93EKo zrA0N>6V>~w|5@Et6Nmh~y5@nJf7cwl`2NK|T=MTFR~>Qv5#KoC&Li$S;;|#1K4Qkw zc}we-ZeIGKrB^S#Vd=i5uPpu3(hn{>ec9BqPb~Z9vWJ)bd)YNdzH(&o@;S?oSiXMw z;POu_zi4@S#kW@6z2cb_zhCj^6|+{Bu3WhC@|8EO{O-!>@Besh!>VIe1y_Aw)q|_9 zI_mnPUOMVuN3|b)$Vx?AcNuD*QrS618gN7f%*-(G)g{c-i_`VZHCrvCQ& zAJ;!xU)ivvVNb)y8vdu@s|`PCc(|dwv8Hir<5`W@G~U*@zwwuiFE+l`xVUL`Q(M!9 zroN_R)9$8EHC^2F$EG)%nw!@*f4;e<<(QT|EmyYO-}1ATTU)>1`n%SbTVHSeN9((- zGuxK7wYMGHc3j)(ZP&Iv)b^{kr`r~`f2RHJ_J`Zob$s%euO4&%F@HX0-kQjoZ?7p? zTeWuGy0h1PX5E2xA6ft7^+OwO==xRHU%HBd!QhVIEx`l9M}yA<-wX!2S9aHT@9q9d z_buH&?S89!Sx47Pt2TdN%MDvz-SXEh zRa;kVZQZ(S>nFGVZ0qA&pWXV-)+72?^*8qi`?vMa9;h5RZD8lXORH zPI&o*9fOw--ZJ>D!KVga8hm~5AA{CV$`{4F_wm-A|Z`;dGdjCniCk>zUyOZo43wJc` zSij@DJNEB*aK|G%UfS{Z9lK7>o_xm1R^ZK=U*hfqtfdG3QM2Qd;+k>9@n@3jGbhc) z>5y9ie>Lr=fR9ak3h?o1uL1sgTJetA))Uia13o!zKHzVr7321WX_ow9)z$ja$?yA# z_^=*j{yuZ^vLm&p$naa%XHGulN{!Fuzvp>>{5sqMCx34KOHRJv4UMN?%E{Zz`A(q8 z`cI(QdKZsnH{**5EtZX^2v4!S7GF9T5^B&)&MvBh|n z;5h=%Qu|DdI}cA@BjaDR8RY8u*~y76{?X z3#Z`;;~Bvd!4t(3!!wF!3}0o~i6@TdL-sL&U3e1sO2fDv3?%WS>=ObL_F&+2dnk~$ zhXWaVTOezn7?`wA3GBwR2hUzSQ+Pg%=OcJNYJVVbhJ9+_OgtaM^Km?9*{20QVJ8Fl z9zfue_C(-Qb~weSY8)`+~rw_GbcLv@Z-?W?vJy9M2W@4S_51T!rUq`=-E`>{|lY;JFsh zm+kukU%_)7p0DD$9?uPUZp8C7dq2L4u^(T>*dMqB&#m_T_&Ub@fp6G93hcvk8=i04 z4+L(ve-ZeW{RqC8@fg0C@mSyv`?rBR?Kkk{jK2iFi|2cIzK`c_Jon)F0iJvD+-Ltg zupiG4@!XH+M|d8<^J9CNeE`q@+7bIfdzbx?J!$_0&rk9E%$~9z#`AOgo9J-!tld^A z?yaQ1GXvUHV{6wE<7%;Ieu{b_?r|}$4*RR+(lGpRqr|Bs z&ocQt+fdIo)UyrsQzlpE8rPL32Ui={H71s8OuAn-xGx*rbq05xN$on5+VzHdy`f%j zs5hz{6kA_2dAZ5B?lF0}*SPL8<+tC&yx-*IeuKN;;2toz2TTqgFgZA2s0R%7fT2EU z^70eoddB4CIpcc4#PWhk_a%dS$>3fwxK~VSub9+cHPlxP^;JV{Dbl^M&A9rCbZo>R)4DJNRQ5!m;NcYAeLme{IAw?~=PArOFB0c`ZqTAu3zwIVh zJCv)~+FA4~+yX;kq&xZPras9_orxok4 zM;7a{T47v`#??}+ORcR~msMM_E~^fM>tGy}OGmLTmo+Aqb;fnPiEoPuyT!!UZ*cu4 zzJ3#5*u=8SxF$_}dra6pCcY_yn=v0py<0h6T4DJbqE4E%V@%_b6|6)Se)1+pKt+ms1%UL^3T28UG-r&|7+_46C ztisK+woQ{-ooAh*T#&KGl{Kyp8`npT>!NA8G%iwk!Hr1DIJ=nr=<^8{GW{_kh7Yz&L7Q4@}c7?0}&jFw_Hv`j*MT+r~9(y3Wg? z#x-ZU&dZ$XIxlk#Zmz+V7+eYCC@&?`bzaI0waid)np=(7CrsD9Y{O&8Z)ts znRMd@7dNblY`TZ>nxLlvyJOhCYDc`bk8-oa}Dl1gFDZp zcAiP?0zaqTy;>^JG&Z*cb;+ye&pfJyBEliC48Jz%H@4D~^igP$1JZ%qz< zXI#&iSe`NIK4);x8Qcp7_kv071(VuKhWe7BzGSGcm>j%nTyL2iylq_Xm{{I1>Aq`l z?;2cShVE~H8PwmX9|dOUo>F9}MTS~rsL##RrFMdiY+r7Is- zT3XG@{j8-GTNkXlVi2IO-`Dydko(m6L!krrcBr=6ZTva_B_LPo(X$_ z!Chd&USPsrZo*z^_^vczuQs@=P1vhV*jr54uN%Ivo3Q%~Zl4Le&xF0lguU1B-D|?` zH@N*K?0yq=(JEa>->N6q6GcxK{fVFFi>|=$6-Cb%JyG;>(Y0`23-_PkehTi^>Zgki zST(qR=V|y~F8UE@|HkhV_cUfvXEC04tXHSKW38Ni z^0Z5)zhga$=Pf)nGcH7w1W>t<$apPZST{&LX- zo{!`C1fEY$e`)49cs@P-wVCJR831k&&j_99_MW$`2VqT665Di{|1vhtoa%&|7OyKlHZ6pT%=4o_h|xc;(AQ z7q5Kx&~^6f$Zy%4+ZJ!0^Xb~}<2h??wzg_swsvPp?YuwCsGax8lFQ)UUHjRRy|tH= zTv2;9@Hdx4Yv-0mYuA;I)OO?dgwkJC7nfZI_or*WS$2NyU1e9`cQ1aU_#Lf1V*Y4t z)BN3xBllOzqqVatUM(svd!y)?ia+Ct*8UOCKPyIRS5=PIuB)t__o2#>+WnR9V9!Fd zHd2+XJ-=!MPqg;Ys?+9v<*>cAUpwp_>o4N{k z`?XegEckZy(F<>_eQROuyq6Det$wEB9cu*Z)t_FJt$k|I2%ekqjMg4qjrXX&8P90# z&g$0c*Jrd>-wk)5rgq-qn%%XHHPPBNcy{19t){(tH-0~c=Z`g`wSU3WzBr2VZLPj` z$pNeQh>KRPIATG0$ASgr?Mti6R~&I}@i2a)OBa;?YiYK&b=mU8CoMZ*#h0C1+`8;M zJa10xSn%ew%a{EF&xOVJf%f>a*6OF0MQeX~o$nR#Hy1KQR z+UsEbJJ#KJo@lr;(B0Tt-QD=@>Wdm5uYPIf6L|K`2shW&9N+SebxF%bE2B%_v39hL zAipaYqYc*nsI3;iN8y=u$n$7h)c%&Y&#^CUf6%(Ly|wz%_Pw>wwcozDv}2Cly6i!# z74JaLlQVZ6a``d44!H-*&*_tlJvA6aYeRJ%8_Z_h2 zANL02#T!M}9)IbIM~*+I_7VKvJnPaGug|!2MaP1R+5K|Sz8S+y_aZOnpx;AwY;CRn zcVBDufvt1w16vPRf7*J>?0@&oI%Il(YxVU0+ZLbJe-Ya0`FJiuU%VJ)elgn4#dyDq z(I+p49Kmf_1Lqc>F)+uzeBglf&4K$5+0nMQ_D3gF*S=iTi)Ry_!&jX#aQLdHseXr| zc&EAc8N=vn!>!eUZAZ;pam4Q0Uu`?B_zyEKtNq)y5y+p`>Px1#R-e<;T7Ap*>XrAN zbin%aNw?P@(sz6P>&Wx9$73fVzCK+);|4rm!*es9TY$S2&oP022G-yU#JCE!cs<-f zJl*hbg8u`76RcD5d=O6v&uO4V@EZ-(&lnH9itkImitkImiktKPDMNcGG?Wcz*V^QQI8H?zQ2m?jVoOQbF**6p(jp3!JdNP!26Kz97Zh^5kKNrHp#lv(e zx>QCAh7s-(ZWK&9oXm`-(&Lm`lW(m4*cRcXx}=;9O(f#k&SZ2r9UmV?Q6)M1zVSH$ z8*|@@y`FaxELAzXwr)<1)uBX3<70JwaF3zEh<7rLCZ0<6Bx2*SWVUWBmJJ1W#uL$W zOd0?OciOr{m!F)%Qq?oRyTk;OA40HBQ|{n!#xGv36MEatsno8?i4((#c(ga3hy~Lz z&h&76Jhm+x;f6|VXak#4nXGBngv(F3p^303jVJK>yJP9>a7w*8hZ+loIP#eEsjf+s zL@fPL3B=jq;8aSTli3s+Y$_b(^chbaE$kXdGpRF^iH(mWrieud`T1#Mc9Je}yxxan z!{IbyC;o~yAXswulJis8k*_NP0tZ8<+zCngE0t;8AImXOoDD6i)&?d=67k4DIyHeBiA#(^%#YC@+sF~| zyRd5@mZsj>Kk^|+kfBI8nN$L@$uPFCt2dsEb|w;=!&9lrEWe20DXI?Ua5rVa5KU4E zr!z4LIv7i$oy5{4f^_p^9#h=x%YPd|Qc1K@NpN%P4QH}a)!Yb}kRMLiDI<+cr}juy zK}lzZQ`^JY$W96^R4y0hbH7ZJ#Edwa+0~cKpzycEGMVsL%&CgLWH!|^K9Qa3jXIAA2%y4k;Na}8H?=NmYmGQqSB(Jl}MU-EmT6}zhj%pUpu>ac%qjQFDFeY zXYlU2$eD3~ss#XLk&UH^)Srgvm}H6099+)Q!<7_>rJW*|bo28_N#$p;v5m1*2<&nf zuV5&bZA=R$Fs3-2TaZkqICAqWSu=T-@Km6k>B!Fb?pP4RWKue)5`z>5}rWc=IZk+NfT{D2azFW zwxKoZY850kaxN1YB$+Wkf5J({+Q{^wUGa%+$!t8qy}>t#FjA0am3A_QF)_9+89#k8 z)|ZWq>ud-;Kgl)@<&2Q+zNsiIQekp#eVdwA8OZkRjc2kDS*pH`l$EFv3Cc*yK9Nw} zYe-cB)ptC*(^QI=(@h${a5)g3(xVudW%%2S0_aLjCZk(o*_|mK;V7bXYCH!q7#l-I zV`wYT`DsO$8*~A|KZq zP9#RckzFPW;R#A34~>lXKz*iW+m|FEm`KF9@grtk6v5Q^L?T8Nvo)2CkH#acOsROK z{)4FdEbHKChLdhO_is`Gc0*n4H2S$K`tI0hoYWbaLC_n~gr#dLOGA_B_FH4wJ*o7r zAs#i&3prd{V|)Bq^b6#UxhlLSDle)91G^f|SYjY2!|5rgF6nRtJ!~SJjHX0GFfoj$ zcDrOW0(7B)CkJB?1R2)JfP!WhiA7`4E*=Mg7@SN}=i8Z1B~z0b(e;3)${CDhWw<1N zS}M$igQ{0=1yiUZE=MkOaJr-_>7yygFI5L0rQ~80(0|Z1*ytUkb>HKLv zcuYq9&`?y5nMj0366EZoAq|6_@~P}8Uw@jW zW;)NB<#dc{ivNVk*d)aQYhPp+ela$rF%7~129Jyoq&N&~qYn><-aQ;mppVSQeq#-Z>N-BZClSiOL+mP6d#M zXUuSH#mFd%0@8w?=ZYKyaizw3G1#WkQ}B$V+8V4ZO0vPi$k$-)4ksF{L~M5qKY+<> zUve}>jixOWq7kOS3Jxt>yS_aXN~9v;M5e*YWW#BwtcZoJBn{SZXL<}xF`4BkmCGq? z9#JXA@et<6Ng59uEC^;UnxxosX^?9?i1oIq5wAh!r{H87MlmYS2wF#9bbCBmfTjmh z;h-+xml5}HY8xih2sRAkDE+dSY7D`FY~>Cnir7TN_wMk_Mlug34g@&Zh@m3Jhyj=H zh@m(zKEUM`pMqi0+DbG>bV07eUvMN)F*4J8Np#}PA2ld)O17OG|Ao*6myAxyzY)eKcp6~ zqR5-387Yp`QRDu@KWO>FxKYGlqqQYH$vX6DjaDC<>CltmR`Lf(X(~V+ADiNlW*{6- z!|T{@T#|sfhG2H5EK`&Y7ktkADhI8F+7JtouF1$QXq3h}M6vK>i{>D@_cvPZp@c<2 zBa4DY5(SMU3K~TeG&-UH#h^t&W1c8zv{*J~kVh>6I3|_=U^e2GB>>{wOOZKJKuW)J zVq$0_7NIE+RfMih(SMt)?pOp(WiXX(XtH{Ojor;{ZS9R6y&cV6^}S6E&|n)|8XMa? zI~sc$+q*g%+8cX<-8fs-(%jSD-qFy|*3;PC-qq4j-`3mGBw92^W18ur+(<;^q}SSX zFd1aEG`IBPBv(&;u%)ZHzN5J**w6`OyEWL@QeWTM+F9Sw-WhD@?WylAemdYYQLkUsUE#*kzrSI{UT1P5FP6C8>WT^%l`dx^hb*Vmya(0g@##oKOp z_2>nO4QqYAB`GHx=;iQFU;;y34^9Z{^psy$1udF_$vMUXA=8tIglXkSLgn|oCh2)i z)KHr&%ph53q&^f%#~dtsSgl8=93yg+(Cl*66V=i9^a2I3Oqn((&D7 zlZj(epWW$gt<6?zM`thQV9hO^_1(Rltt~ArO|7lnU9D&qP0ej+zr9VJ9l_3ES9^0) zOGk5OS5IS4YeP?4Yp^HS+S1%?4aCB`24MSz&1W3)ixxUtft7@Fao{{Lp3Xu$$-!?; zA$N#iXbL(3EJf~U5M(>1{Al`6G7ztfgzUgbh+k3ITSIW=G%ffGHZ2{B0=-w$QoQYk z_ux$n>`pe&wBRSnk9G(n74=?fEZ0P7|!Bjlh5NvCQgy`wT^t++Gp`o>-zOA!4*xAt28*Hw} z(sFlmduJDB-))`Uy}=f1OLvPYeYl+0M#qM~VCm~n#PnXJuXx)H@4-tS>`6#ur?fYx z_Q1@D@s-M&B2(oDC+9EEGEN<*Rkbm8ppD_TtD&p8vA46WsiVE2zNfLJv#GnStsZi{ zt*fQ6skx~O3-LWDq98ACMa0XdFCWY|DEq_*tb4!SP->2TOqp*Oc5< zC$f`e1l5^*2A%F-qg$K z(Qj~YbFbBx>FEa?3T@rCc{Bg^4~u)#@RrTiNqF{feeew}!V`(j@Ep`jHOlt*Jd`^#L}IO@ln^lL;K`wV3k8`iG=M1PNa#Vw}OD zAqx|>XlhSp>#%iP=ZT#|!NIgM=(*kbb}Ek*>X z&vWFA;@r@jUGVe{et5=wg~@_*k=_b-!fOgU`KiLuxhCf1xU<#R%pUFscu+yA|a|b?G|gL$`;n{ zcEd;u7VP;#IYr49qcBP)ki~>c3oCBy4rN@nliqkblV$W!HZ`$1{NX8XY-uSP2`597 z!jKJt(Z|PP*cF$K)98}vN7S^C&pGv{?DFNOw{&*1ad4M+d@_@DdBbMg8>WUaGF4-I zRS5?nz|_V!D;$l6q`J0Y-h^DGF&*3;%f6pO}g^ucWA zb3#Y!q8lGSAr>qa|>QMN7=3UG$AAiZUY|heZwvVJH$tn@O?R z&rnnt?9G%Q+jqv2g`#uOLSxYOIx~us8uQR(BqAB?b2e5wNMiBBi*lehVmka86CH&_ zbC1N7h~vJJgWx*c8BRhZnp#s{BGIT3%q6=~Qdw?H4|ZCnAtnhYb6f}x-rpBXhx&Q{ zrH;?jd^EwY^=MjNHgqwvo zB0+b@MkdE}+<1c=zp(T|K~A_>a{T;~n=x(}4hgh9oKCvJxV^$aYho@2w^tZ)EgzaS zu3kj%71a1}&JIG2m6&?cY3v?yYAMH$nVX_umWjbTJJpqfh}OuMBC6bUjzHFv1reL+ zrPlj0uoa+ys0C0<#g19pk)=C{_V%Gxs42XRi3X##o6z{(>AMkyV?--rNz{#P z#MqpoW6nqSC-X6Tcz+V_)l!+GL=_RzWh&^fTppv295W|ofQIgxqfDeV=CZAoZlQ*oP^rCTO5Rt&a2OFXmsdnj} zM0kSGqWo8(O)_2CNqF^iO6dCZQTdQA$iA5nX^pnd-($7R8`-4dvzh>M4dMnmLD> zj6eb0J4JH`hX4)K?bUme9EQPg9LH5m%%gOI#_^JDRr8vH6CQWskp46;aRPC3fi)xw zBL|uN2UD~Y!@ZPd^&}(dsR>V8#jR5yZusUDxNq7SX$}V z^JHd3j%lK;DCnL(SQ#N;LLfzP97+%32u1jaPcBlmeYIr|?LP*qqNz)?ntTej1+XQ4 zdsqv*s1;?6W{`Ews5P1hk3nutjzes~fE=};6LFqtuR%1n7Z`cT-Z;5^6g^%a#F`8? zNYHKu1a`D3M~BeSxG@+c++J4cdtr%-L5V`@TFr2R!l)FFS|_FekPMwo**FO|cDnKJ zT2YF~7NhLW>vx4hUD&e1%Zb>P0~2A;i&Jd^<})u%CbeWOGxjMjlZt>wWlG%301J;7 zsY1b;#sbl3FQOYDn!aV+=!2)@%GZ+N5Yc}Y%99fZlP0(zs69^l1mttD@a z_A=^m!b{1M%w7h6Vd>@T%aGWi9p7FWq$+x1dP;5X_O!a8@$AGvIFrGaUZ2o(wr%@P zNU@;_STMb@(_Vp$KS{T|!W@_@kWf5G9K5NE^-XWm%C2=V7L^5>*$&Y=&=#=*v7vtq zrwY(m_euJ_z6_9s>DnOT&Ar%jy?Blh7G7h(@hNnXB{c*_mPy`&w=J2WJ^bE=WlDP+Sr@$wYDDl7WT+`fCL>)zVqcO@jbW=HW^t3g z$G@Q zSRfqBP9GL4{kfs$)A2~&a^=rKx}!R? zYICN%?@7~AFIG)o{fTO1^e1A0E9Ot3siQxII+j0$&%OJTAhG0FnLk-NoIlO!(pbL0 z?AD*FhjxhhlY%%OgGEVixye~E-iqRBw%cHMNJmgS-eA0e#h=uZ@Cz`AnKTZvdSjwl zlNSrSyL;m9Wf+cOF6tY!FT=ae3Nwh2horVlu)UGzsYzZ2B|a$*)GAJoXR%&EC)Icg z;^mhlyXYWu0gl1&o&pp{uq*L{*PD!W@(MM~?cT&Z0kBMP5O$8v8_QzLcTKk&N8?;%RDT=L_c9sXeq(LLJ377TN&o zOTfVA&8f^9pfv2kdETJ}4vcttAcWM>RZqTDQKx(vS8icyq=FQ@m(1_=OW*BJ6==bVmR4qk8K} zucr9KL@PJD{bJ$O3U7d3T6HNvL#ru3;g{SJPZl7f?D`;4(x&Ma;FDp2C)s36^X3lg z4G}a>*!#RRGWjL5n8SKWo3egbRc(+x3G`8_y{`0dc&sn!&%Q0~6SL%aDC0vSoyeON zI=}A4QZM#m&CwK3U!zmOeMv0Z#eIS)Y3omv6?t!3X8VPgq&h~Skj{BJZ_v%LQ96rF z3lM0`Uix5sZ0A84j>Gl@=M1~29B6vv(u;i4z#L#KN&6-Hlf!B3Sdt?>o~Q=m5u5_k z3)fTn^oBRjB*e&AL~C_q@%Bv=-P^Gwd*d+6BJaW19ShTL6Iwud4^EnbLe#$p7swb8 z)QNvj5m2uDYDpTDY6gXv`k~K`!VF)CPSY_Yuk;FUk$@(%0WV1lLodY$6fcR!l7o<` zyB~zy3tbv&>_IpNahI82VPX7&$n|OK!zphj$tsIIHhv_ruuvoO2Fn?0{aI9PsduEVm4ih^s}erJS^F+PQ`%MmDi!!9Xtq#1chda30NY?{&ws(C z2Xg61|6Le}T@~!Vbfc(Itqoy zYG-UOnkBZ=r!m_o#A_^%KJkz`NFon2X}(a)+onxuR-k;M@E8<*c+fnK$MGlVxMMz4 z+1p%zh@i5K1|_lu<&SNA)WUtDK^O7Cstsc#-*Dhy7;`QkCIn>zfe#5YZFJ>qDw4vP zH&2hJDYp+=v;sc@-L$CN3Egu@Qbo^?eE4C<0Ee2w_|VxR2M$dA%z#sf?O+VBZ{T<} zR92tBqILQZ%sQVBO^TgH)q`<~isKVp_L>(YOYG1ve1c-6noK8$Q+x^n##!2Io$=v= zNT8PQty5I@-l>9A-DAArM8EQhkcat#RJFt38=qQi@QIMGbM(Qh(+1wCc*O0@3}8Q@ zm&lVEtWfxnhQhS3jCS4fL>+gv`t!lu+?n;p%xd*pDda3H|Hq+$7OQnIq zEE%v^FTe=#fPIaVe2+x|7TW8DIdK818nnGx5Zk5~4{@CCr1P3y5(Wb7ll3K`)A$o0 z9Q*^wkmgMUlA1L&FNKdrk==?6o`u;|$zzHcCwmLGHE(3DhUg`dVIE^mfuO3u3zO-( z#e!k6eq4Y?=NxHonm0dc)0&q6OSnNI-86-TR0g&HTUNmc7WLrWN8xYmlAg-h{vhEGn zua7hOQn9@269o5B;o>=M7WHE|7|qc$3Ul!$XK%zfkr3PKMbl6T1)u;`t)j9L>kW(T z2cvPHIEQeo!Viz!yVYQ5tuRmEUeZK(${V??XVKsbiI6vp(mQ%_i!kn5^$bBg7>J#xKPe@ME=4y2dU?60@OdmTbNh1zAu`A4dNEI0 z>aHy>0cBQ@CVOZKk~d|u6G}i9E##2EB9x zrG?#qfV6vmBOe^5J>?k~GvvfdJ`S^xd{jsd96RA6a;v(7z+jibE!Z%Sgp)Y?h`XQS zWeuzj=^wj zOUGS-*(rCYO|hFYB*rLfkZgkLTm^{~_R_%}XOFoR(Rd0c3mNOy$%K z$>?ngCnc#oGQHT0cXZuZZiSL4oZ*xQ4bxl>-$tAY=Pj#_@KEvg?1i$H#XW5}dP3Kr zTcoNer#{sMK_=Z*;Ujr|dO=Zc6+;Lb6s-Q*hiZa}SNV_?{3{PcAuN2#Q@DLm0%Xs2 zcIY3ZG0OR=9A;{&dEv+9Z6VWl$6*)2`_mAE^I|wwH-I}Xs3g#OR4Y{&=b!{{v&pEB z6ey}%m&e_z?mOYRm9ToFjt_7n$U$%?gixl#1vmz!T|MEfcJ5L{WrE>OIEt;hR#I*m zcMv_v49r2e)-R4tI=J2jJZg#Gipvox>Q6lR;+*9kUEsXsp>X*ObpQUebHD+4ba|+9 z*nB_-95@2UM>M6tIY{m&PG0z6gp?BQDeb|jpajgL4tsQRe0+-9hJ%_gUr}*zl$6ps z9V8{?K}v*V>Ej%e`Ho*lymX`x<5zGpotWyP3u#nSLk6&5RLA==ENttYOyHA7{Khoh zlLHg-7G_7k)U@N34$WOqf>NG62Q)a87rO;(J6>!=?v=@lQx&;hq<2wWW$#0!1w9ut zHniZzKA6^%N;vSoGWWaU^qz~q59*2AKZL__&fAAFj@w8ST#mto$V!AdTEeA>;?`cu zv&-9!9?Pv7XAE!vSH7`;MlPRekPEr8siY>zEfg+<;Zz}U-Qh-LRQaUEBC9ybf|}qD zIOvlr(h`t&n6~OX7l7)!76xOZN|e`$V58;bqtv-OU*h^Yk?tlPZWny`)S##k^0<)k zJdDy`^03+pj!#UWz)XxLIOH6}v%yPfmTCu7iq4r9p37)w@C4BYs< zV1_@VljRKYO;VB_ac(5F3`ZzsZ=VH~-?&xB7CzTqGNg_ucKYNI8+#3gRdL?7uVX}4 zqpx4MLg~2p@P`XevE}1TqrvtS7prMFxo8v)UdW|{akc02@Ec2^SCWb%{>SaA<)&G{oY#dOSk=^cj;H`H*oV zU&fu)3^c~kb>_@1`yz~2Hq9EZ&yinsXHQ*UPu}(GYlqk4lCP`@J4StzZ>r)&YEEr) z3U~YRt}jWPj<~q|umr=FguP2XXi1^*(jK3cW#uFPu_Mk^?&1hS{q~ zvQ32sC5k+l*{yc?vX?Tvg|^fSQLQDR^|GJTuH3D1jE0J!XAc+$_#<`P;w6sEZdp4a z4U#urFuDgDO0kD5MmP0COpw0IPK=hWJN&H>)mVghC}+|D)R{yUF1eT(HxNxnMQA4n z=A(xaN}Ljyj0SRKk<-A-C?9ow$45~(Cm1;zmzNWelT5DA%HFRqF-bLP-bT(mN{*Bp z+v&022u)r2MKtE_Di}`3V%8`D9`^Z4GMbXgca8)}RiBTOjXy3d3P{v47mi+}FXKXh z$yvpA;W5#oz-ULjH0`3OX#FWzmQu?jxgoqrBp^r^qnz6JphX&c(0v&he0iNy9VDgO z7omV7>nuy%SiTK|`WN%yEjD3Z&tWyf@t|EmwqnYY)py@B4-c4#o0lGSDD`TnRR>MQ ztkRaFt=tN7F`-maeLJu(lS`q{BqQi5a7Jx z9yH#=gBy$?yB=(4R9{)4^DNoZJ{h;ERbc_Nmkb@6qUO8W3wsu=YKj6*%i@|KF}N{N zzOOZxP76#LGwO1ad4==@dV5VDp-)!15mYDGYN6?{rleqRkUAooytT$qt>t3qVy)p6 z8F;xcG$RG2Q;ynC0o{IWzL11M<0?f=Y2?$nl89;!++gr!6Equ&H~$DWrsuh5vMtDu zLAqtjl1>TLDk1)@DY>bN@3q0e3R%ndZPA@0vMt*jS7jv=x7bZ4<&(plv0_(QSeap2VD+ zi%6ggvlsol7=#z>gF#sz?c`qCz336c{8s8Y=Yq(D5^%~U_ive0Xx+t(#|+x z?WBFUG`b2a+sb6J#|Uv^XS-|miLaO7-g2bo#wBBW++K7Gw>Rvp7g%a-P1$4nla8U5 zQ{+@(1$Sa9YC5)xELc&7%CP>7Y@%ugL22| zycuSknx>3f+NLeQ5TbI<$uBs6CW^~I&&nw=^@=K^Fx|0BYZCmC3~u_0K!Z94nGAEe7G^LAnoFaw z^O4EuCunSRvzEb7+w0Na=O!D2mctwXc6RudN7K@7DffXj0|UbG29QzLLOp|`PBjYHtT9@dtVV_F?x zBoz?F%pO*ewFjA%E`W_p8YexW{Nzu&3_&J-#2O)*!4V@V= zTv5ds1_b9p%OKRXfe?DTa|wwF!$U=>hB||z3d_fZBC_0Xm?*Ql0$oy<%PfSm?he(J z4Q%W&fzmEF<$~2MxA5htM0xe6K}pIwU#v0_yJa@VF{<-P$&jdEEWM@iP~T@PvAFI| z;y&;8DDV~ znoyd+)QH)`JzslJay*qZR8voyL+To@i(MkwsiCRyk(9)v`!Ot-5M8t>-K3?seQ%}W zydRW7+3}qPDie2HC!&=plOpY#5|xHgcrBL?2Zv~RgDLbi2jkISa4-leW%^V8_&9pcEnd>nyl9y%>kh@QLJ?3ku!qt%9-@$8-XMsYgV+c| zxDHC(=sb93s4*NFjGFv~Z<3j`mm`;|#dt23Vv(6%E`F5lKe@PxoYYwFiQ$7hs?3e4 zh0DV6APjBS*@5Rc8a~Ye3sT5RLF>$-`>WxTXK?J!e6rm$~+!WlNfJH`s8huQ| zCo(0c+_5MWZJBnXW3EhZ3DXWFPSCqQrDz8a5TA_qYnP(MY2dnjg`rp|jVg4GX2k~Sz!PF1bs zNYzsgj`JnPLKwkm;O7yKqoQ^LRfY_S9-3|)>Rpp0H$<0XC)*uJ*=sQ+2uK5h?E^KplaE?F;xIOCD}Amj%h|*f&CPB$10%JA%AZ zk2V1CsKXAWPLhq*5U8mc1eH+^!t_nO^lGt?pjg!vC3^Rri7@BfFgJ``%r5tBhcY4} z3mEe_2Au=#=NiSlXeU!gA@}s|3rt|m?h1|uZ3J>8gWXD$J&Gt7gD-vNaD*mvyj&gp zg%t_!I8m^9GZoSh@jZ2Bq#UxX)7-)+U7F4hJ1FAfDX`k3VQph^n}Z@ADt&3C<}LD2 zbiovwB0lVa=1memm1frA6pXgHC~7*n7+UvdZj30hxJDQBsJCNVBU7PMI39jMYUL(J zXrju;6B5Rgjj}%p(+C^)X=NDSEylMh*sQ`{u>hcA*(Z4A!Bz&kjb%4&afLF2kCbP3 zG8d(-@1f*kH6EhC*2G*?*V?T=m#0Xm^1Ye_gVqS;3!jJ8`4la^hgbAr;-+nxIVg4G zbq2$fV$v91mX~lt%G!)O>S!5^muRqV%ImmWQ!3m*d;%t7DmX_e=4QifSItxeL9dg8 zpm(KMxdhn3t2XS)*_MLu0`7{beIrbzkbN09Mz2ATOpG$m_E;iuJgEyqaY0BGn(+Di zS((7*(@|`#G;AmZ+VjVLEG5TrkrI7l*FmB&8irxL1C80m>S1D{EgI}WsT;R4UKl1> zT{B)iG%^Bv#B=}549{2f$6_Tjzvx+z)1qX+U6A+boTQ%R}LGR#&9Z9&&WU1-p6=&L3g9mP3IY<@F- z=Y`FiI60<7C}Aiaxb)Jz2%#f6zF{axY^hf{qr}x2XJSt9*AYzuvTn=X3{PFzDI!~L ztP#=7Xff!y5c27y7+Yl^_D93GwAMvVuvF)ud*p^5cIQq&8AX{i6FbIG+segg3C3h2 z+}z8Hyqt(rK+J)5EZ6Repf!z2TBES|A!U}ybdfc(fX)clVm$Q?VWJ(FYW~Cs$a=gE zJH<%BPJD0%Uz}to)Ebl%I}wSRY_L~NHrP!?f_kQ_YT3`DgUgSgZZg@t4X?9UF459j zIlDx}^W=j4QWfl!(=iD&dTJ(=dJkCx*+*$RK2{M>%?^fM!!XB;iz0zoU|rnAlY_vL zEsvc!NC*!nh>ByclM(PLAC?T%K;z)DlzV7WG2YgwcVSpK>y<_aitq=IoDZ!4=hBF> zIOMU*9M{00Ok~+ioN!@7XshT}9NKKf z!VC?w2W<2~3bNLZ0!G|w{hzNc&kx}sDIs(5Ip@&v5zX9u&NRn|OR{i7q7rqu0-ecp z7rNDzLdU@h6r41@L7Br^jQ$31Y-A8elh~a~8fQ;3x{=o56osdMZUk#=ELcz)IGu@$ zt*|fK^?jx~-Z_FHly=kM3@*+&VIGx|U$sZP&)FkWCr*<+?InGb`XKj%L98K=n}oM^ z!^ka2Dwy2cg$H9WF)*_qK9risVuSUEW3tazm?;wKOB{+Fn9vPjf}vX}eL5U=3B8Gt zeR;i-akwF&b4>SDVqk0tr)i-gx#r-EM!_l+d&9DL$ZqY59OWSUiaI$2bq`lKP?Mlbp{#I@FNBP^*ES6s(x9Q%_(S|rI3BXm-dM;v zw2?_1V#YZ}>AVKN1p*dD09&L^ymM>}$2ce(TmWhdkraUTQw@S&{c zK!b?raoQTjBwoEgSB&Ewq|Nb6q%YXHE`YEGVzFIrKeQD-z!2jJKS@uBbT>mNi3X3O zOB@^RdrPIe(y2YXF;0-uVyMIDEftijwd)%~WRiqapM6j&9PO2(H>IisRW!Lgq|mVQ zO-VZ!Kkag-jV1^xx+4uBw4TAy=bdHb*ztRHh6e6$nY0><8Wge^n(pkP!S zP~UmUTYOZJYRQgr$3>U>4F^vAJy<9f+4tgn*}+vLE@Ut@G3AV|{d|Kx1_s*OEEy8L zfGS!U{u2(2^2RYl0%ll*Y)bc^8^K{ z>SGCB7A;+zK(NworJ)8^VXgs(LZ_^eQ88xZ(Wob>Nu;xGn8zdIInON%@<8Nc$lmRG zcibv5NuL|0ZN5SJjs=DUCr_pqxREeUpFTW^YxrD@R2{)^vI`eEW2=tvXE*YY z8THvuDB}+6Ubkmh4o*U_;H}5d5*$8KHl+!;ENTuJ4TSG&66=nGm!=&{Z;D58oWQ}G zwLu4^8zxC&Wd!pQ=>&ngeI6gB5mTANrAu{y-h=PncWAJk%g%5zbvbCAYR*jVd>$9*!e;`$KKqELcP+%#sPVlijQLCbZIs=rT(nU0Tl zKmkv=f}_KsF+g!iOzFe4{g`OxG35?q87FnVV$|_MmBxLfj$Z~xHF74xd)eip(~Mvb zUJ{m@L}CgP1yb!ue?n()$D+;LVwrR(y7}QfqcHS11evZoe$7Zq3+@5i>0%9T9-?d} z$iU(R*n)il>c&e4DGkQ)quA6kKG~7vIx>eUQSd6FX>zKa(m54UY#nATTWFpNTaH8E zCcv%4!TE}EOi~;UUqPP3pf)!W(a5GN`S@rZ{>GWY9BkQCXUvlP?7T+9}i=u7qjGWjs}?}b;rXfT`ZeK=#VW9#j360$`777X)nu7 zYgm5R{PO=80Tq;lrq(7dGkwEmVVbe1M6hKx8Wp#k!d4#H6aqpVy&ebE6dDtJjKOY< z+R!Ueh-fFlr}$l4AW=tJd39NChIJS^~I<8D!REO184|J--I2Pi;x|Qfc)9 zVu$IPq~$1QhD)<_VbptV#21yzs>Fi|BikT-^h*#_2ky@fS`dvGUKLf^3#qokO#&8M z;Y8aNR9=M$Qo06d#^R4~=W+a|i8v@EtC*z}Nr9BWTnUs1nzShspo@}&alKy-o?ere zh$SEi1ecenQZX(hq^~gRRs_K$(`7-sUz|Fl8!H2`gPp)AW+F2}1%ffRfl-(1PYWYU zJc%c7M}Z_PTyacMRDj&5gpA@atyeJ2CDG{5$hD)fZfEi7IURN}@5oWeLMOTz-iD{HgjFZ|9d!~Q!~iqyky8l1=^cTA{W zDN#4l({J6x6rbmoEK6e*_fX7vFTo^mf3&z*sS_tPC#1zWp$+q|4$*7edOOGr)*a}e&v59yXegPGEaiZ?<^BxoQa z7o_sjMxzyxi{eOs~#_ z!fkXk&YMU=FzHEj$(VA$it8kx?4~`qhIUG@RI^@eC@$CYxfr!zmD@}uFj5y$p{#Ct z2ob8Mg$mkTF(iL-10hPe+lr2vdPtjbMp#nxkg!d9j~~fZ6_PS zRLji8tF|Ch4?hxWA{UL1`%q!$A}7?8K{6nN>~5AfxVVNb*Cb~#{zFNXg+fg1=pIK5 z$Fbd5{ecZ0ijP)ml$D-Wb!btKOeRwJSPZ5cE%d4vR{OB{l+yg<=G8yVoarQqs>yg+ zv16M(wm78Br+;%c`u9b*V#b18`4Qx`_Ymgl_S6JMcKsok)-q{^jVJ3>ne8Yi*IKB}& z5-jg&USHPX*-NkI@}i5R)A+ET3pIjU&|}yqgvK_23m@rbCz#~<0bK;6Ajw?a84P`PIyl!q=$lydtpX5%E~3va36?6Zk6d#xx&3BG z3AY{I$#2eVT9g-9_i?WQ<}cju2=GL)Zxj~|U=s`P8SEcDXg{ZMZmn+*=PjcMO&j;M zo2s=h(?vIGTK%I)CYy;RMy(_@^T|;?Um~XndXo8Q>UvDV*M6<=*qHljExwHcofQ@% zi$@5wDdoi^T)80K_}HEDI(KKN^Y}7;4Pg@swi@Gw=n#bB@Sw`d63M_hCU0L#S` z7j*%bH2E1(%O0+VW8Z71}c~4)*D?T%9P3D z8J%9jEx5EMOQkY2nV}n-U{+(Vs2AD?!!6C9wO6Ve3wxNFQCIWBtC!Ox6grG%+J}9C zlNsY9nVFiM!>HyV{_X0b1f1*0(uE26`~3#7yO+>tXP9x43yV$AxW;8R zHWb0)0AYEv?DlY)J?h4_3?20&BGsiD2VnHW(O*JRIeUZWv=R z#8xOxJ_TY?(Kaa3~gV#@I}&nC?{7 z+{=ZgDAWOR#Rv@VsG}`-?yydzl0Pg^a&DYpDld2y2Z!cOEl(kEWJ9^cu!iZN@{5om z!Q|j_l(U?J5|C4B(uXOioUr4!M`~J@a^74dv?ad%#D&6}@@5Se3K63jQtx*mU9q~b zV`vuORoaz$4W)VKqxGIXRYKIc>hxugYA7&Xv{{_5NvR0=i-uy;rBDX1a;eOwnmdW< zESbp+8{S9KG#EYKmmX%&W=vNR8v?2$9~IH^QRNX;fdLNsy*fpq(4nl(77BVe9p8+m z0JTI~4^Vn-PGMw3?8L3*T$SP_%br2Wn;5Ujvh;9+N7Smj((FtEsYunEP%WB`$cn@r zNB0lOf}R{I4ytf;+l&xNDmXs8tHOuk__i(GZbnidYFz51ltmvF`2VPTpWn)kEYI%} z2|Fb2jfdSNsSV^*^o%wk{|1H)@${sJ!yue|gh;f=qa^CKeeefLqBDY=u#dbxCRA7C9)MG2&i8TLt(Mc&fzCGI0^1#9TFSn~6ZZc53z za$+u7l*+56{rj`}?Q{-O?*`M$`ZNy6#()65fUU>-M?12Yv!f>fVmhYV zSk6maC_stv-Qg^_sxanWwlhk$99PrglUmmp)1Q|lten+^6d-4Acm)QK~fX^cyh9{ zAxpl8j-c~kab*)ZzH3uP7i93JY?QWw<*S`BS}9G?NmdFOO@ywkmpl{^{7WsQ2iVf8 zgqC{r^(SrxLGCI3I!mP|aW_N|Pk>No$%F`o?ELDrJiO33ttbk|U{$=HU8m!>8( zU`?VqU=s7W2x{%;*N`#)*{TrN8j#8`<}gy|s5H~Yd1eHaPRvgYpdzoK&|P?so!5^@ zj_75b(1UHr+eaOf{*{Xmsw3VevUmHUACIX`Qp@}r)#c31T9)T8d2cGw-|mz_)CB#*-D0Ttjemy@anEkdT`Y-3EV{%4?JJ z^}Wvs?UXMl^R3D3kzWUZPZxj@GN5ltXdJ|;6C<6PMc65X?fjc$wte5e4EE{nfsT`O zaHA-#xMC?TQ#*`frGd~;342dw5A_>&IVE|9Lv2}2#cN#>-(^N~V68U=qIKQB{Cb;z zi|6zYx*6Bs@)BwW4?^(FFkQ;;t*Kv`lMfh8sJws2yPmq*xo1M3SzlN)8dkN(rM7Td zu{NuhU&LoO0gp|Sj*cr{*mm@lxK>w)K}<&~cWnU1;9I-ZWl~8@RW9MTyk3ch#$6D- zwL8ZqmaN8DmC&lQ9NaExMyy1)XdX8@OPnhl^0HR!cQO<&2_#=w&!)uj&OOmiPp{5 zBT11C6*gU$c@QcN_%02{fznc{>2{nz?aG;=eL+Q7MXJxEO=sk)HV2T?yeWB5(}Vvk z)gm7^HHF6719ZFuEU%kPHqpw95oJKqrZR$7e~Gl?3w(1Ih`$k9f+AruEZRRjJFK8M z)hGa3kqkoCN;8MBd@HPE#ALH}QT5b-k+cG#v_8a$Rf!jQ)})u<)?pUa`fRL)i+AWh zK~slzL6nV}{1|&eug<@V?%37WI~shC=&7>{G^9Wc0XpvjUe!)vNBy$`Ivs?AiS)u5 za$~f>v*)8-aQETK!^)7$%w+1?jZTi?)A9!`kO zO@D>OV$zPbEdR_0RSnUhKQx6z-n&~l@M1L>+Y;9a8ot!voikm9240Wn2pIwO`&)2A zxd}B8yV#@{9XH8a0cjrTe#Gv<2k$TMC}4^nKCWHCLeG}1MtobB70s21G36FxC^s78 z3u-Py^k3{c?olMq@`bbp2`Ij1*m;Ry0#Q{SaarGbUqi%wdKzH+01|w%v`QQ`!R%Z) z(P7=%QAv7n3afF(VNJ=PW5Nus-Mp!ns-%+gdnePA+42+GuU$?&!VY4*OIwMslN%}@8x60 z*w@O&?4ooaS54<%#ja-KY#WV&B!15PZcUE%_aw?`H#3jj8XLVCVb(pi!NQpa%>3BL zw@?sOQpTL zpJPrF5^q}eAkBH!E;y4HW6*8F9=u=ybom=(XM{X^8qD9?+3o{w4*|D!4(5^s!=!hU9K%`wydmcQU@70 z)ZCazT6k-pakb}ud{uKeAhAl#iZB}Cl>@yOF9OLj*+1-VpB^0gR`ID+<1!dK+PN}4 zwAF4nK!8yzfvv~NEz@n)E$x??gTPy9_L15;omNQu zuImD(^d*USZ;ei#@>#)_V{6Z1b#sgIO_yc7ifS!u%}KB*B@3_H6@!cfh6-O#WOA3Iha_V0Ar7c7`X9uAb||?`v9E?ECJKkED)< zd=&XmYqTsyTDdS|M(P2wD@`Z+Qe!!kmYS{?UuTxThGhO|P?ZD%lz`t$mqndJ{O|_$ zUXtW8G|Uf_B!w^c9)`N1y+|_DGUrLwW=JmS4FCr806vI*y4j1^der8-DVu4Hyo$Wb zML7SoHaYe$+i{N&w6_>Sj9s?32+91+IcQeNML@`@>pl#7Yq;&ZKNu&w?YqV^iHv2y#=3M5HL#TA%p`wE$)j@)VpcCT%TbBqCL zY6=Ldr*+e%bh2v`x8LdAEq?xLsy}_C{hP@lE)aRWRCMv|P+t<8AJkWEL|9^%6(Z);E6T_o1yb?Kj!laHGR0m#8rh&|5ji1a3~-)MDkhD4HNO zBR_LMGb}{Q^Tz}gPtOSu)nHugD!RPnI0?exVK?I{yip_zDq-)QZa*roTK1v3T6@Z_ z-9UpeTw7m;ETQ?OF2>7QvgS;)O#lL2m_SBQ#%$F?uQt1t|D;rBrPZLC=f}ZX!#Wqt zMisEjI^!|s>|!j6RqpQbn^@m2MyhaoYxHu%)FBQu;L@&(q7W&YJXKt4fYzGWml|*> ze;l?goxkR+iDVx<5c$ydfSrR3=tg=d6;lH>K3erl)hN2x#5~qkW`+l|2FUb5^BWM? zW||-=Y%geFA_NcHH0qbc)1v{%XCB2@)4W6o*LpWG7#P%a_l_nq(XU~h_w@n0H7=U82Z;9jB3VF`j8WuK!p~DQpsz7eJr3uhHkL z2VAROrrtaI+q%qB+|WNmF2-R|uHyxz3BSJ7LDYOT?K;ba-tj!Mwjdie)95t2fYC#= zEdvd=P0tuSumeR<2#~|lHg-?Xj$0s?TQOn2Bkd;?uZ>%kLg29+@Q%eXo~{UBJ1G3I zccgKhI*3X1kF4U}XK>P<4F_;qIyM%J{JL(4NJrytiXBX~(!PZm8#ovX2~HAeL=Y1~ zYmn0@=w7d_QQ$>lVI2fv@ zY_eClBBN37YpyIxp613QcNRs^G`62118nFs8X*c!TSw#k#AGyzJesG`xP!3&P|NAu;k3=+O#Svqe9#os0Z?<+lvtXqDRTDhqYBalH z9XuP9W$hRGdr^bPUKxY9X}_bXR*im3hai*GQ@dxUDHTF#At{Ybux&oZ;s-#@tLrRN zF`8_e8HSd%Vc|wb1&YdmFC4e)95NJ4PTW~FP3&4#J4p?q^8wfXNwkqS%;K9{%9&%l z8#j=@`RLC+ZtOOi7+P!kp$5jO^$=#4SB5}$Y24(zh4Et(zF=o;QeCh|wyAhstO-lA z?Fz95b|OW9yy>KaAk;uT>vFAdlx=O2vNJc?I01^iyn*Ug#0ZoD6t~`_v!UvPq;qLg zR5ub$w(Z*N6)c*?AJhD3KieJNcTF+E)|POuf0wI92?FC#`Sd`J!nxD$+=#c~I_|L8 z?v}hX*F*OA)Z7BlqR?o_ZdxmX>QruosHuj`GNuO2&_KRbhr);16n? zMnLn!BP|V3^M>xg+yS(336!R4ReV_fwy{!<2m@--2q8*&1Gh63Ds-L)7WRBTDvb40 z+z&xlW2Ki+YN;zH4|K;#a?{!A`kr}?tZ{Y|Vk`mz9Q$`o4H96TS|JQ(AEH6)0}5su zVXs-uY8~gj6-1@7(?g+sw5`jDcG0>W1HMRzvj?{3@NQDG*TmgPAtvlBzO*t{%x{}raF{o(rIY(UqB9nT`A^4>VUb)YC zkw}j{q*vi;w~V)>3YH!x7rZTC=Ta(A?2immPn%@BC4)8^%|F+I(u1USKAzhH+JPj+rB^~RHKK2`WUawus}AddsmyOK7&(KN@FNFxsxBUh?HiH zG&+He4N_We0FX$o0?P&w;Y(ib9KKyYbK`P>=2V&d?2#{PSKgulYdbUZ@^;BwT>QR& z8x2lCm`7x=u}M#m#=lYd!o+2a){Qw4GTPq2SqAEQC|5HzD|sGzFqbY3Htd>bW`3-L z9IRsWaB1y`Mx!|Uv@N;^klAz-eca^3n0Vvi*{N$tSu&?Y$_V zxIjICt{)8m@hB*2CD+eFpRdS_@svwsrm-^yB5ek5PYt6sr`9$7FszOiy5MEN8jACy zZr;97N%QzJYzPIZ=d218txEE@)j>xi8Ki%X%39WB+QyBCe`Y@(ZrJdwH5+C-&98nu zqKF>WL!GsZbk=8I44AVD7L={$!P$=7D~O1Cf~_NA?dG(B9M(v3$BDgP`msX5;(2J^ z-E0<$rIzSy_OCv7{$7ejh`TdtA8)A`j0(ko@_17Vrp6Jl&~yZv%7C^2nGYeiSskn7 z@|O%OoHAXb$#gnoMxd62)%`0!C(9z*V2YNex3C1q*eNg*bV&Q3ebbBl7U9+nZUd_q zC_*B{Wd3S@_c1qV%FR_3Buc1>5&^S3t}{}z5)e1l8i>X{BSoZUr~W{X<>u-sN**WO z2J)-o4Spl3LlU=ozZKdYcc_6k+J=j5;U>7ZlRboX)#p_fN1|H(j zb?shvIFY(#K+5+v$3av3)|*H> zE%_{}o&y>+wOb0FsQ8I&EA%Le_pfVbD(=oyW01-gcwlsi=i74bt}~Qln-C1Mb;Ux& zpFwwZvmdaCENj5kD?CVP%-ax+H{{5qOo*#f0`eu^vErMzS*;MVC8J?yAG;?JV;Z~* zqHc(ZYYLGCQ3Ki9tFeF+>mq|m>_H3T?xPN*#Ph1j4T*%8Fn3y+CbxdUckG#Xu*fY3 zL?|>SbO-vS$9V>Behh~eM3F119nH2VPVcjw$!x?Atmks(4c@tk*iU6T`bF=>oAncG z|F0$Jf3uwrRe@PLKsIKWwHQQ)F|yFVJ3W2x0~t!3h{2VaEgv$oLh~a9JE7}#hr>SY zk*D1nHoUhOhRmE^SP0@>LtF0twF0aduCU8mMiuyFZ2RPZ$38Zv_MhGz_=;YIpXCiSEe5kI5B6mwHTZpPHa7AYQ7LUa*z8o_@MbiE z)vGPV%ttiFnohkLz{VAf`Wg2LDv(9(d_n_UjVq5e83XG(UXzURodYWG9BkY6$|k20 zHKBuAk2cU*wpYU8J{lYbX8j~OVGq~Rn-jUrI}hNIcQDqWkD6;kZJgqhJ}^2>OcT6o z=6MlU_G(t|ljLJ`uA5noTrmy*j)Ho$Cu@hK=}iYm{Yq}i=`vn$lR zpygVSjv0>VIM9mFsDWC>iNtdSNo3C+1kh4*L!=>G(=!AKsrz}|T{4zQnCg`x*PI_I zVFrBw0&NDMDqM)+m^=tBrxc?03^IhHos!}>yF`6qkF4%-d)QSO2}|SY46hl5?rB(J zUNED}R8f-1ku*02DyB)8Ek3n@ZJUxR^GTRGMyqN0=}iKG z6QZlF`RTo4+Iv0gM{9~r_hu|`MroSofj)#XHRZuCVWbzIASjw^^pv;?XE4lKhw zNXM#kvz&x_p-LOZrU^foKG>U>`DsG7?nkdczZ+8Y}W!Ez%NCpA4l8+@xS-zXkSU}7f_8aaPZxs&M^OKw}6 zpl;3aiJYZQb3fg5ZlH&MfPH?zV~m5(lsRv-eXtEX=H)tw=fxs#p<3w)t|>FA6CNSE z*a9P3=frM%6Je{)mYHmT0_N(E2xRRDeF37I@u^JcB5MnAcT*5RDkNzi z5_(UYEwzk9-VZa_4v6lTKUzTym)p(FX`h;kNnQ}4LBlS~x948j;9&qX#!e>l%AmH{ zh(a#(xL)sS0_6?MYqJHZCB_$gi8+^O`=w*tj6QI<9m~*hxd%o6picxWJ3BAKVXQKj ziNlS=d^%6Tb~qoWwK@;9)i3TcG_&&w?7p&(ZofsLKAz9P71%-Ztrp0LF?Q?$VRXO@MhAbFgyW=;qUq?Wpgv#`r> zJ1j2T3nUU33dJ2;stKzt>4E)h2LUb>2&Q z*c?rOtyDV}v(@ZhE^s?Vb%+h0qst=0DOUhN+qA2E+~`;@i(5B4BSU#dk165z0kr*k#fyNC@H@xu5uLrP6fJhrW61x_{q zC_zSQZ*^@<0(^S3@?}oMma5BcZlcwh8p652VN__jOu;#f3(0dlBlp(qsnU&Oo%fHY z(frzGyC7PVeo-{%co)UfJLK*0y3ISMOm-JU-;@gGWN~zT%3!?oN=S+?tL1o-`MwPD@!k2fk@;_J`#pOWrRX zRk0a9^}(hjy>i|Mo|=S~J;=@lB}lNAvb;Sd*-EI7U4|aVXo->IFgl2K3BX;HfU~nD zD557OaW`F`$TBWUXzbzwA{iCCNUo@g)hY=e4#IiZl?5e9GmE$=%FN;7TZckT17sFZ zN)|sAX+VmkK-xR7cT8K10$%f;neM#+w>aV$kFdoxNS#lPl>9w8mdg&vGdd(N4T26# zCVeFCdg;{>*&aMchKrMy-EXAc)t&7@OLT2|0MWha0R$t!uoj6|;sy!0Sv>&Vo(DMt zPho?!UiR9~0GtQsa}h!nB;Pr>F(g>%ekt^ri`|-SYe)7Q2!ond&-UjkN3ZN0PH$uD z(g$82+J6+M;Dz^$g*B)VO)ytY*aSwR^@yolZ;!=jCl5|~P+|gvc#gy%dEB&vjOSB7gA~RF=d%Wh^I}$K z4~2%$L!*!L5g~lfM+hQ|d|i$&$5Mmpr85{zoa`ClpH&yk{2Uw9wJ7DJMe?>@j~ zsS9jFm~9hl$6-J|$N*gs^N(BSVLk~;gT!qk+`-NuK{IcI7>)Obe+7?iQbND;;bq90 zAy=4#NRy&Z&j;YPDKTinBnSP1PD0Qy0Wz2Zkjtc`Hq7Rpo>qDWmXce|taeePALWe4 z9{RCLatTJy#t)z(N~7UM?U~ei6M?YSvaX10=X_3_Q1qn-aKGL)fj=Ey(xdJ3ob+0y zYX_<2WXPO9i6yJ?^PP;0ZW6`fuZa=BrL~Id$Q6E^)yX(7tD+gPuKGY7(ZlwZ`N|M3 zk>t-#L`oO^Ya%ZPw;#h8Sa^RseHgP-s@Qg6-Sr)v^J@{HV3Tr7TWUyVq{1@pH`bgw ze~f_Ag_ifETiLdUx;c`JSgB^XPtiauVsqL+9^**GH6SiA81BYrK^Q0=E~H87tEPn@ z?zmi05&`mgi(JNz#P^;EM0^HcqE{WwNunjyAa4QjvG$w!*&kc42;FG&z;;QZ)xv5uPVW68h*q z5Z!K@D3C?=%_oLWQ9+2>;9|re#Fb<~GiVP^P=I`Ux#(i4RaOQ;k|ucCq!OV(xsmN?f@)3^k_~G~xTCrb zy#4-wil*JiQ4+$}xw8bwg;hZU|QEh9I?W2)aLLNp2VKi@LJS`{>PW z@(zwPzV|z5+eRBaaffMgENusepxUQ*H8wY8@gN(G58ih$w^RHpE~R*YLGmvU$-j&_ ztkJ4MCNtj3nsgqT+<>Q9KZ@hkT997z#S^8WNPbg)+&C+7ZCJf&gOdZfHjzVY4X~GG z4(s4D#GuU*B~9WjAYUPjZ~?6~7BUT(#$1(DuT@w~%Ea9pdnTyHpkBUT(@M(-DP_b6 zg`rXcvy6pcEGIIt4MUo=#(G0|qA|o31rD0nqI0l>3!-!g9+!#wS*)h2zU-G}GIuB+ zN^AE0a!gH05$O8*5LW?(GyXx8`_HUErX-wdRv^WqaARaE)RPXOl9HM*0Oc@H&H6S*pbD2eT3Q5W6xiV|eI_sloFHg)#$lTG7N^ft5VZCddyR~5xMqw|wq z=>L_fovZl6R&CpWOF6S;|9#O0_>O{DCU3D#;=6-)~Zq?^w&) ztLLoX)lzY^%bG8HQmk*peBFIIykONM3%pV?DM(JvpP}F+sG>RpY;rr4hM?$iI6ofc zB6uakwzuxCwN)1qef{wG^n5f%WpTH=UsRh?&2K7kA9sB~sYT-+2oqPFVmFs2(DW#i z1J|55Z{Z@vNZiSMa(15BZQ=q);Z0Q77A)_vnfHa?0s&26w*6_DlM6k2U>92Bj9q}` zZG-Eid_$T_`%Xt5*Q7EwfSK%;kdH77lsGO^YQ=R*n9#Bma7qCCm~o!#rq;JzC~TvY ztqpEBx%zZTdbeU0EU(30B*0SZY}xJc0Q%)GA1GaH?K>n)}0C+H zjP^+r+(;`Sa7=v&X>bOl>b|u5v~AMS2>e6OrKT8jIhEOQ_nqGs>DGt|q9JglGEhuV zeGGIEaoSHuX}9+E7WJ&@rn|dpp){bEEQ;yDD9a3WgmjbhUKA}{5OspJ{d^9S-$19^ zq8DGr{dAuktrI60uGgRGQs@w37urmi!~c4wiv@26#R*$Q5ystjFZ(lG7Rfigg0#5_ zZauD1^i=HRP{A`}@h^fGUC#{9JZ{P^B~oL%Cv3!k2Axk}VLYD`AR2^IA>_RP#eS16 z_NTv%0E5#tFK6pCb#nT zwyk1wA&keOQFFuZndpezU}OM0GHx@4C4mm8Z6ed&Acn7r-FmpcqodmflG@2)q|n4s zG&Ef3=eLZSIQr>MVX1XeKeu$s=(ey#2*LaEca6e_R(V(bq{3D5+MO!!7+GtAigxGt z4QxByTs0u4v<+bGPC?`b>Nd)8WxRnu5Xwr{#KS}bWt!%pq>Tw5q@9PlPIUbsUkzz8 zNT)TQUUqczz>T5{?=Y3Tq&AD+b1N3{4c{upmml zt8CPUS^T;$yIoU`ABmY10M~0`91+lBrK!R%X`CQOm5Si{%=9;4N=8IzU9yFPb#Qd4G()6Yw9m6PF8pjn) z25j@>(JpJ%mq%I}YR}p^KbpvkRfULv)PTICPb7-lP4OX=Jq#=V3g4O>@7Iv$ZOn#h zlt|CnF-+BHtj@HA`_|Z_-Q67;eQSUFWICJfoh}<=w9JF{eta_%xBTVAMOmL~-F1)> zJk$n$(p(?gPLFs2Z+zqhBnI9O8R;U;6s2wS#m^imy?vF|+SctKl#Stq^9B9|%x=HcpjI1vM@`uS9JI0IhB^FH z7WeWt|B&v~eB&|Jis|F=EO*Bu$Psi)%Y_q?g~?>&6)8uPFp^)BB&1|s(DRDZ5$l zm%<`Z@loN~uS`#60AK#J9m3LqfSLY|_<`S`u(lNfr#7UazkWV^yP< zi|wtwl88)L1s>snL{J=2c-DF7leu)(Fp05RY!7$kokMtXg{|C)(^4wz_)y6gd?uKs!IHEr9~ano{&vdIcGI1LHTdihxX zdgV^byBBW`Cy1WJo?sHS1`ZJ>@?Sfe^#S3>xDO1s#TA&^?r?9oeD&n~_;mU}mopxo zFArQWi+_$Gymsan3ZiZ;uU3*oS%NE4@0j`DG2C0GaS~S@n{%|etE2XbIhZ) zWTupc#9Z(OizCJ+1!dFzeLb?^D9{9{v^braUmm{_>$%rHB36RS45$x8#n-oFVR;5ps=gEqiP?GMe= zBVINjT6_6f6d30A!7vxy0;^g{97uQOfNGM*>ci2lmY^-4$Af>le=xm&&J0k(9MD=c zc`}!(0(jK6hDdMIJ($seg&tRG(V{+$nBz3tZE`1O(fd^}At)n(4$^`*6wHBR%nFizN#T=k;t@-DcbVAE_&cA&7ew!PA(RQp&1A(WD7 z)zn}7#fMv4rw{ji5!?M0CzkTjrHun_S`Hu`u3Y{h=L2$4&Rv)8?v1M-eEd)U{O;~d zJfD0(%T=~IcWGyyp%Us-`yr>RHK5>G>= z4x={z628eKAp(917u705fXCm8M{OXV2mZvnMzGw*yoWOV-swJLkV@%m2MWpO7)vs} zmvGg^hfps%OMbAoxP4>p0em2LdN4iwTytz2!u!h6Z5S^T<>9Q8u3kKsoRr8~-T6+3 z9~lSh->cGP^9bI-0Tbph*u2m{YE3k6UShowN%pM!o*sN9w$wqhOXovHc1etGN zxiB9=uL^u-E1(oltZP3p-qQJ<#z;lP%kFFBA!MzlLG23sg_YtPbL;Ur3ei3zozKZc zmj?m@k}12c4*8VjcU)P@Q;%{iptrZ|5AERC60| z8|P@Ho4{WzOKOHg#?4$#IrpEIg}i46ljb$aS@rEak|#O#MR!Gh#?433y zZbo9x;c?=cj(4|tr4cOZ#pzlMPq>L^G#yMY`me;VpKzyWdFALxk05!0hFHk9DIL$w zk9dMr>M(yOBJl0vB(X#)@;Frxy;4!ZV0u9Vkd!SL0jQsQ@vu&8V#?>@{LH+O`WrB_ zu4m4kKtG;LemJ2rW00~&B`3gFgj*dXEH*YNO5J6BBK7XcAjNz{V@jWCo%$I?N|0?u zc0!pDO>Zx3X29Zi9WzTyd;~3WE`}|7JVxt#JVLCCIJvo!n109sOC^S&skniaDjS#; z*@Sm%5mS3*f^B(6RvNPY@TY?6V!-{-%+Fx@VwFdvR8>RXEYl{M<_Ryu4ue_-mfDvd z))PMC(oDh_FJBXFqQhtVx)o(XO+rMozQBElGajMzbATqs(JPdG1E>f62r~*~D!m=j zqrw)7vfFc%SltA&N7|5%h2UQ>F;>N`>0nV3;KZMt(N7IYnt$}$6EHvo7% z2GjwaADLvTyBO4nLCFJ=3g6Q%pof9{G$g@7uKdiizVr$v)P=yh4=nLIx*I4A$zYPO z3_Cr^5F|an6(f`W3~9J^VTj!*A=TD3Aw0a2-zhz2xZ!D>JgTteaFP=foxDnc>gYu7 zXLd?hvv45CYmB$X^>Kc%ph}r?K_e<(gZ?Fyt)Q`{n4Hy8Z)#wWdl%=m5zm9-X@OdP zY&evl@x(s(y6*gFB~G}PE`-6&H=Jn$8xVy|dE{O}nuJlJm~(g69VzV!s5XK_kr}Im z0u|06i@OO*j?x}3_8pZ(1Lyp3w*}aW2-Rl`_XW}9q&~NdYJg!m*+34((MXtRAfqOU zjo8ZqZj#dxZ~Y*`WrilDx5%nXt$7oBA_F3EbOYsilYs16T8k4Hd08ACJsqi9Qbs;i zmD3{y`Jwz)*ZE3mu;)Esh8amOQMDbF>7w{>cA3p-a2&p#n)J=v6lTK~>6#QivObUV zv8(K8J3JRu@XFX?J@*()t&}$QC`$oPBmtpKn-E+aLgO_cBwkS2F1$pyZl}XU9 z$EpdJLe(@qBT-CUd+XfyranaMX}OiICAk+hhZ9++cGec(c;ye&uWbfDVCzRaX)pyf zC=+XQ-Yhp>Z zB&VFH^1O{0z#1FlALyd|OMWn5&9}|4(N@~p%)iCk>uEH(`I1ga;+@uNxAXYg?o1p* zyq0F1vOk>GZKX@DjWc^m&5DxQ=Gn>7=G2^PtRH0*%XUGOEIP+>2-&W>4+-f7xSgp> z^zl*rpIMDkhiHfNiOBCGzc8CYm38Og`Ao*|`ATTlyd%ma@kC(p3lko}1zTY#O6@~yoDZ4auA(?9lz=FipZWDq`=re( zNwlfBCJjNv)fGlyY!BMsmUdnDG~^ShQ!nC6=wbFhD&5>A$)?)Zs;INuf06!)Nt~V_ z7V#aSrsU=8s12i~rd7Q=5e^o(jh}I`qVAFQpnPTTBLZ!;yBi9?t`{Eo6%F$u#f|AO z&MQ{iN8^SE!a@_z6mDMP&_T3YlzejF6Ny2CEr;k}NtAbe3xH-BHy_=Hu~%6l);zyz z0R}NX8(!6C*%?yLo8Qsuw<%Sxdxm{OdUi(bI5g>k(9k+syFAYDlX?CMI8; zaqm2i5=x#8*)5&QAimyuDg`Wvvf1aj-$qVyfxhN7Te`<3i~9X-U04@FjB9e8FHv@i zyrLCw6ouwD_&qrlt-yg#7b(ftU~LErBFcxPLn&z9*U`HGpPEw@GTlGTRhBMPk?}F(EkC3u=$lAT*EoK*zz`Ib1D_1hMNxXs39h z5FgT+$H|B(Vq@HRU7MMeSj0vv&LbFa=ydX}e2SoK1J3qhf$jXD>w1a{|H~x8PK`;r z{)CY9)Q{GGE9I70Q?3bZNDbmFiJtj}zD7W??zJGoMe(ZoaN4t9_#VmoVOH)oy^%p< z5o(nz(WTD}#hBO}2h5j6DK4NT>}r^R-a(yp-#cO)i*+mjD0B2If_fT&gZj-=VFAvO zaXb_6A8^}H#(mK*D^D@isl_<;tkf@JO4H|JysPLa3&o5)+e5(SwASNx`qBZ47&Ks= zjxg1IxSj}%j39(eFe7Ao*CRtPK`(+l`lOIxr z8`T>{Vb7@&1$Xe|*V@?luBtl%0KXQWLV20Da`cH3IDtIY6W`v92vobR02n7Eo;QMa z%Pqe5#HisKCxW3rj}X#qewu0ry-}u=9cFxrYD%RW0V~{RH6X?#7mhpSmria9cczD8 zbL?a!(%y*Xv@m;`^zKwQnp&uxRkeV8WF<;Uc0Pg-D1W~;Ynq4twA}}MMOj}!_9k~7as7YQvfAd_5mi5M&#Dab8flM zGZ*E0a$T;SN)L4tyWWJ?iLUV5YF^*l<1_XlY4U=bDe&WSG(8avnZljv2TaU`E8ikK z^%A!pY7J&BybU1L^p5==5O|>VWm2XPegDwEPLM#m&nEj3?e?!Lj{&eAV|#bN^mr@n z42y@e^%E0U74~041gk1oMRVS7W%U4|IrUgth9$Ax+1wBkI+CJAbY65p9QjP7sFgH9 zvGaQ8)e0e@Bnq9sNL{AmjhcQQdN`M^?1E0!Z%=EXF*~)q9^gd7DU%hC#SMYnf77S+ zBZz{;Ez{+7QXb*t5dD`V!c#poc{u%Yw+C8hD=P`;PB3UTKKVT<@8l+Ab@$X6l#_(8 zD`?W3q4S-g2J=z097jGF;?HRXm>H6j(#PpNq{#5F3Jr z;cL?~ZMYR`%#ZPsX|Gh{yx=fftKfK?rUlrcZ3TG78#=PFgJo~DsGg)JBN_g|aQQKA zbO_5m>#2-qPgWifqNg<^YU3&*c9E+GTy@l=iifAi@$EC&0A%!9V`WDo&#_V`i&U*h zk8IiXSaa4Y`ID5sxx#36L)n06U)F?wZOLRf42EPmVD`a!_b{kgZd4;s_f9VWh${!X4{2b8+yNlTXCZ?8@cG(Q_qQyW&pJPHP%bAoC zY?5TIM4k+Ljtm`7PPEK2WRoFf%1MC)p0yw&7c-MLGT+v2jFM=S_M2SDT3!)yLYX10 zvnG}JX3HUsy#1oBS<&T3d)dp!vJLK_4gOSzPQR0cuhW^5QfLx+)fNI4n9zQ(L$F(6jTaQ)qoS?BvJ=mRC|qo`rVW{L8oP%b7MdY0Q%oB$q}q zO|b*O28szStd_QuO!%aJI!Gb^eKw{imdQsoSy*!mdH{_n!UjT|nEqKDJ#Fi7G0{LtrGeQowDGHP25~x@0WYi*ydRaQEZywDo zN`y)6fCI&?p+lI1bCJwbSTAY`?mEWQC(`5jUA=+^yEJMLw{}OIkv-*M(|K1FYI+mI z$PYkTF&yJ~7FpHr9P=iKRv&+l?JqceA#tzTwebT}JAwR0B^bq!QutJMct`TH;w9Pz zyf_5(B~JPm>a%_Sh^Qw^8GJeq>I@#i6{zvr^iw39Uf z$wR@W$2)m#K+j*$MkZo3q7G%PQ2mfST+P^q_nJ6ri)Av66fKDFUT1(KVaWRSqFI0_ckxlRd$DE|WUO|>~S?2Q>!dQ$HWGAHFPFcKw z4%eoqdiPue=496lNq3}uo@^WlLJ=IM-j$74w`EE`z5r`GGAOu|-?CWW-8fbPqa$HI z6S6%=A-W@ku3eLj8d~d~KF$F#5Va&$J2I;wtO>LoljdJvavR=1(Ovu3%#vRu5iK^X z(A7a58Opkc7fjHgm?sQr4h`(vFQ>$vDQt`0m}^7Ye=VjzNsTVeSid_mlOK3hZIdvP zmc;rkMVkeHqII)?pD|!=uYs89knf+#bqycClCo*<-0f9jWpC~dt&J_ER79wIZAg71 zzH%b2Ku;^HOxsg+%oR&40Gtmtz{fRSq&<_0VLFyPn!#iRGQ1&27{mQ=Gf7?PVnh&3S&GL^89Wai&71G@Z~x&T$|zAOM$!+F%-M`95k# zjFv3n(HlD@V4QrqL!6NUSns7!su@KKb)A$MNMq83n)7E_VORntTXP~+wTJUjgq4>0 z@y4X}!hF<5>Ka{S78$nFZ_DPV$UTrafEs^5%P&S;9yPrn2`FkwwD{B=`)sd{UpY6B zR*>#%o!UJ+`^blNx~+%683{X;#+|Nz01EA{1E{J8fS>qM9JjbHDSlb0HK!f}xuDgQ zjY3!6a4$$jg_&x?lw^Pi4i++;_jp$Jv|B=Ubuy{?r_`|<) z?XfRSGcq(<6wq+97oj{Nt~QR{nq51NcqdpbWQ*GnqHyO-t8cTJHV*cipk^sUM){nX z3ec)3mihCGu#S0=Zh9G*Oil?B$R-!x4CxBbBPXDq`9}&7&-K0d7B^77*JiG5izw>g zdR7FF>!%Cd40Oba^n`DM062jcyM^utc}7foSbcT}&9|0jrG3rAuQ zbx%A%+igJ4TMe%yMlv?Y_`Ev%(r*ez*vO85ixq0-aoMcczBUzu+@@@$_7?7Ta8X<$ zRRk%c^?4PP68h{|G)&+&)7ntV)3e>^IA?wz(xxzwF3y5ZO_=;>- zF+p3C49Da8nt8l#f*SrPggLSEpa?(KQJ$RzL^$rYnbE9zYF3(SSOTl7!c_mXZ5mN0 z0cI=g3w!!N)R*-1Pfd=H2ta%>sy=MI$JivE1MZrkc$3PM13a27D>ARdASL9eT7nko zwh{#vxB49!qmWf?T_WhZp6!KhJ#0gY4fxcfcfUOC9%Dzv`LD$CCombPbE0ejbn>>Q zV@&#NRZ?hiES%2PRfC&9BwMWM6(I3wUm3GQD@AnUaiHl{>r1!AQh*H1Sl( zyZfb)0Bz4kSNZj|%$Etoe8`=EQ=X~+%6HW5_*_3SjorGW)jhcouu_Jw=^%|1HvLQj zgp7$@Rw;`mv3^v7vwqNH)!T5{F-SKOp=v60R?=@g7MiN**W~5u*Sq$Kw$rqhMID)1 z$^n#wS|bCfv}{x9Mdu^drGPP^vzGhh^s%(9Ph@hgw=yMz>wf(c8*IBEi%$ywuod!z ztFInDoHPN>#vQDyZ6_v`dXPbqXr#L(dSB*r~u?3l(Moe$69#0`AiafMYER?>OVgCY#jI6y- z3IXC8NKG6`9H6;HXRz+ub?Zo$<9P<3;;@D62_}l3A$c zNGCap^;ys3F=MxLY&0oAY__was#@B?EXAil^{!c_eOEncz@-4jWRb1D- zJiS*WZ7hAd=@E?KXoNPQ`P6i+U%p=;Y6`m`+O;da?L0Eh^9K>Jx_io9xUoDN1I{3F z=uSs(Yj0~9i#VtQbY;48Zp+L*?i1o&MVlXf87qD@dQ!#kCALzxCH&j46&*_^wO5)5 z#BB_5jTvnvh~P(R`R6F#+X>vdzq>a*vC?2eHngt2n%|;bCybVkgP7p&S7t-_5a37Vr4ES` za^qloa)IGUx&*R$1)xc8zpwM$Uja;Vv~Hbg4y8^vM_5OCLuPkpU&Q(#h>vTGZ%A|y z1TnY>P3{i|bLOG8WN5`EDUU0M`^ssZYJCpsB zv^H}*S>V`k?YV0=((V#cb#3_k#eAEcfQUSQ3r0IKD9UbZmH8pkHq0A3fs>9x>KmC6 zeu?&l=>r8Wh$gq`YS%fda)G<#8;vk!?l5&+b@3Un{JQ@UUO>;Wby3T-@8PZq|5F>% zW5_k!ksRU+z_F8YlK9CN!pZhyn-?I?I~bs=(_<*j{-NHL?3yPj#iyVJub1oO>vsTf zBx_PghIB0CS{C)$cB0nGjlx+=GTa%*+qSFgIY@SADX=Qj<=Z+9}3A-20@ zqxJknf;S(QPg^RI91f>P%i|*XvNq?;_zbD(QAyPt}KGwC$0n~;j3WC^-b*BOqQ z$n=zXjuRQT9=IAJ?sg|sa;A)Zvh=lj7@Q!w$#GuD%L%5hBjByQD41+l#BCH$M}}j4 z2x&x7u9*p2Kg#)}KFpMV_j_gf>Z)~U5W`xv!ggeZ;$ugBI#2y_e_Olnarj8LcFjZa z(>YA&?+wBTnkXUfkdtHB7Y|Xo?fC9B(m&Vka6szcYFrIea^R7>@CvrFq*|P8%VSe4 z$_QLPnw_2OmbiSisQ^$Vlz^<1U;{#3UBJAHFa|3LwzF!{{_9`J?u=$|5AaCJ5)ZA3 zOzly=H#Xf%Sz}9pc`E^~AeBJu&&g9JZ=z+gTwo@cm(bdp`6-Y3O5o6#C?l7C-nF*p zfk68VGAp0u5s0<2hSp|S=&hf4MpCZL>UZui(KSC;*Ud*$qx4=*6t`uowB%SzA9Dq= zKL+CAu&yOnO%Nm}c+yGeJyJLq=1TlzZIzuj)9yVmV1^g!`brPI-l z(#^W73LPo5+da|WZey&p+lnQ};!?Z?lsHkngEHSbwEXe{rP_D98{L_;v3u>n+70Za z>)!CtO@+SH|AVgk?y=xgYyF98Kksg<1j_2(?8od2HtV{Vzv}+1`+e7Kd223r*R3Ra z_p|PDjFQ*(N%wZ=so%Dktn(8=-%}ZvHFA`hZT9rSDsZX>%O1|-KJV|Vl98D_$>3G;%H6QM&2BcI^K*?jG)@Ls2!KBlznR#HSTx6 zQ++$azV3tD%5|zzPHcvcN`2JJ_?#*Ifxcwps&6o=`>wn&>-S8vd_{lvt<8oHx5j&W zLn+AnP~|*U`cwO2lo;iy;!Zne5lpzObi0P--RgL0dm0()qzAN%aoKBXkny|P3eM;p znm+!t)}N!vDA22{bC_qDd|z$$TG+>%?9s5qen~%39TT;Vb?BH!+bgDJ{oZHhZ^zrb zR_OxRK@8(GQ+cfVZT&sAa)`OC@tj!PR59C12d>8q-`ebr$7L&t86V=UkEgGQ#57-d z4VJy_bK>wiexJu0{Ef=}r2C7mn+|IoudS{`FSla$WtH-YO3M*i+%DFB_e!ShzJIy< zQIiWy@zI}kKkmAx|FLb@5OG?BTvp}l8mwLYI@vh1U&8%KzN|^xH)Ldza%c}VK_DrW z_v=aWSP2DaGV30x6bOH!R9g$vb)eEg6rtv$XI~mM-(?YF&sV3{>sm}YRM*;u(2FIy zqxv6fM1G`!q&>cf9L;Kpj_6sdm(OxiNgsRdi9Ct4_thsS$C=AfG3!&#SB_MhZ6iO= z4TV|RQ#%-y2e#ZXS24Cx+WTjSXxj2k5zrjG`QD< zcU7gsua=d_es)z&WtGa+YLgx`yV`5?wyj-|gT^y}P+hvks?Tn-x56V_Zgxe=T2oq( ziM@nwLn9ez_Gf4j)PfE`MTt*z^;)3uxlb*3OW#HZ=>lY{-MpPxwKKO_y5p(6%Mi+K z^17hLq$FLxViBRlD~4W#e23@L*NpF$1n=FT$_ zV(~F$v~4E-t$XPmrCxgaug4nb1Ak2gR#fzb;MCL?K)X(FL?`c9H4hD|sGbGHcIP=V zl`}Rs)EHRTodI*$Y-wxPl{;BO=xfUg!sI~j!K6d$Z0#ajG0Td@ZH&hHP1W{5%yOUE zqkqHc0ef4TdRg_*2A1@RhV~qK`I{Amk0k_vxs*X)lNwhhqSDF4?qLg(uKHvJHU8;% zYcHnC><8od#(J6cf;1!jd#i;((0-}jpLgARw0}5ak2Nl=Wy@fz=@9yb8ByTZR9k>jK1usQrP!pWrh(HiV`MfvRx^90(Gs2u4 znskrs*X|O~&vw)vD!gNe${0~!Wwa7g*!t+hw#E~w%*SErlE&{P7|HGj{r%mS#!a;$ zWc2TYC&*16^FT2tRZjn&V>4qrm-D;K3-YyVDym%7eWxzQ+{(Kjg1NpzSa2(W!C$Hj z7WlUh1Y`ztaDkUH82kg51?=Bs7ToKDjmp^_W$q zxvPGyi1c5V)Ot-dZYXrc%DbVz_Z0qAZGdzo*CX=tw(DPzlUY-_qYY=W`!2XW(>OvS z7_Wk#UomnpB91Zb9{e|I%}txtx`VguiL*H^zW6sI$h@)-59@7lYU$}eg3xW1EwkVY zukx@cT#!_l5dUWRK3i4J2>9-r$U1Dk@3V+#OHcpJ^EJ#<`$~id$+3LC@p#@w{`==^ zE49!q;h35O6)FZ!%d~vIe`(J1#S3F*1A&K)jdPI+LF6BAv0M|Y1ggAW7Fn_ zOu->S2Km3BoqzfDV|7uf-Ji5=9M)Od`~zRDkd7ogs5McUP1VNk2lISQD=T$>l$ZcE zLgbG`I^o+DrZ{eN*ZXOGRrkfuBb5op%;R~^WA_6#yjtTOeNU}^ zALH%~=cJo0Nsx&clLqoy%Z7B{Z9~2BSn6i2jL=s|R%x-t;$a$y{7`4Wc(a<>?9e-~ zLhctftovTO4*KPF+pq_@MS@FEW9ncW`{m59yOufdoH?paGt@z7Nh(1Ilk$n098m?`&Dy+W79$mbU#i6)mfMfj#Sm-&$1|igVmA z`_&5XUTe$iUhgw>-CNF9A;czY4?cHqwm4AMj42#htBxlvLm-9YtKaKB?>>-f`>hPn^HdXmc0i2J$+lhN~reW!=`5+de2I#IxZjfO0Mnuuxa0i8p&+yhn=;x zlw>1QLYBXTtcNAk&)1enFPC1SKh~~yp`p$+qt-?pJ!FZO4PU`{i4@P2{<<*9wGG`n z&r*I0AJ3M0O>58upl52!HT5qDz^3u!Q(n~LQ`up^MtApF0$Esv!GjZiV%t6lj|HrXrm7#^90x6C}H0Z&p2K}Be zjIDxYNMC%q*&HAv5RuEV!I7?8>5s~?WLFe`uxtz}=)utLSb4{qTo?$-xUFwC$?hGt zE=~l=SJ&J88KG+=q?7#(I*_4qtsVP3=k)3ILlt^i5zo<`Gll+Il=kNHe(8uo^rNEm ze2?js_l;2n$*bJ#3&*jjdy~;%RBsq^Is@80{nr)AHiYBwF^GuEMpovHCx9o_bJfSP zhPNKdI2Xei7Zl&Q6()-nwQf_86EROGXm}-LcEEn=Ke5xRn67uv)k6NgBQ?M+{YBEg zEG5LJB1(t)_cP^(RQ}HXExq&=YQdL2?|!4df871CRAl=9(%zkh3g@7v#Z?XS2L z!NmjWuasN*s{{Kt{#NZ~lzt{e`H&LdTG5arvG!FQ-LG$Hh@Yrstsw`#FjD6>QFL~wsCD~`pYu9veyZ+782X_r z+4@T(FN?kSP=Av|!#u!ny|4d&rbhf@iz~zPR%jh(yew?zWW7q~0a(z;16AEKuXcq- zCS_*Wbx?E!$%7f_9)BBcfQW#b_f;x8 z8|0c*=B7=|sqbhFTkz{z?_H(l^pHH@f0enM7vw~y#fju15(P8WS3*LqyiaP$EAP4x79OZIV1c$&4y&4l_~9dRVy;PF4sGRB;s#*-F|UpCu?O3j$IG^H zLHjrbx{xH)vv}tuQ(#}b8ixzu#Yw`yty6tZW96G)j>2pd=X`2&?ZM}P@7{Z+*y$1b zqo0yHee)^8Y=+I5l?Wn0nNrp493IHQiU%_xx4z~j`IQsjC@V{ z9}iQo1^VVSDEY^nf3hwzN3w&6Sjk9P8{Ts^s+xL1l`EBIjs`hCSkV}6s}$dnuL%Q& ztkhhd_xgEOL?YN7ceV6W1{l=x<9-gG3*RjUDc|j<%pNZsn+53?&yuqnsYWNTvC~*?6mR_4!`It^}6P)xFWKj(JMzSl!3bHI*}z z-*yU?iT^mPWjy2<2p5Q*yXV#8(pwB~n# z&kY3fc$S%{2FIH!AI?P_{zv_MSdFl^LA9q^_X~2peoZCJl-8{XyA@`L-4MNj&tOvb z_Dl$7oY97#KhSq-MB(ZGyV{Ukz;!{khar8wz^82y(}$q-jhohNA?;$zDN2SRwMNMs zIXl|sK-wG<_}%Uc4K~98X&A3H$E!K z#H1=MSr)`|?+%L{YqPH;>HXe*KhiI_v|-(4Tg`!T6ejJTE6t&1ap`*7-o?Y>lBe_1 zPISDzLD-s7ZfRa!=Tir~8XPkb4VqEL=XEc2bF2_6twfE2;JBUdu1EU)`H+ z2u&Dzu3^u5xM~CqmKb#lI#(aA;gF{mk+pLpy7`V&@6didZz^;F z2^d^x@jbz|8*=z_<>Eja2@nPiVJn4*Dtf%59n80D-`JsZPEuKCOXs!KV~54C3+ynC zikGbplo0d`df_G0S`Me(KoteYu&0S24KZ&AtmRpJ1A5*r^5uzY&qfiQieF%pX{78w=Z`M2zcsTF_Ig2`>4l%uc%+ihk@(POV_+jTi>f~9g{V) zc1E5fp7(Tau&h%6EX%q^A33(y&;n-x=KDOqThumb7u%|>8ukUXJUw}$)}+PmmDKj9c3zP~ znefd^PygH6=rzqcM|`d+Wwsb4Fsw4bK887SZP!``t{oZIx94RhSC5X(ODl~mJ^f#6 zvwTNQQTh20Ajh(*DcR$5uWoM)=dyR^(Ysm4lLkN5P=IXcx8K$`oIuWJf4r+2%xhqz zWyIBXYDLZXtrfv2v(?nqG_QnC7JyW)j0X|M7_Nrd(PWkbrdI*!C(1)M8$rB-IC4M(NIIbI)g=XdzpfU!*_wRD8Uf3oT@Qmjsd+yC6;%= z^0rEj{HE$j(~M=iUNfd%{zPrz<{x#eNb!A5zvCr%U5nMuEknVGa7@t}6Vq?DRNBwB zLeHRFLY$uD>5K|}b7dAS%NDH+$d8X-y<^=cLV2eKW@GH&iIJw)USq9qzLpiWn#Fmd z)RpQ;4fyj)o3fl|ZFzUE=6&|oId*Jnl20|M9B)x&`z{*GZl$)UzxgF@G8c}Q z%%ZE3>ZYriY!uYY8ES8E9wULA!@41WC15~1rry6QFNsz*niZG6V6>{TJvShyA(ePi zMs3?tGuq>FS39rIrZ`}u{}0)%cDenioFK8e;@aTHCIa>c)dzChhLNSgiBhe&kIJ=M zpnN?Ib3qVF>;p%Bkos!|qv0t(v!MjJ;hEepgHrrlAA)>n!~IBKb;m)XL&u1?3_nFb z*@LPEn>`dw-TxEqZmGf<#blL5_(e9P2y6SUN z=+(XSS|^K}mk4*4UelLBb;%22EQ6^_a=)_Lw{L0tRBuoC7;;&UzB`Z4h=R^6JN5I& z9-F))9OdurdY_LxNY9s2e$43t^MuNC*`TN0yH+wwXhZON>vX1=nc^^u>KgmRyGq6Q z#WjV z)SuZBMu>hSVMt!2WrR2_@~>iS)+!tPINEtl1j z4dF($?H`bgKk28<5g(*#WV`E{lRUAezOixQ?BxHf`-$&^3^?2l_oyAEa(Es6lM6t2 zWUyOe^R~L?lnz1zI(SL0z2FJ~ONwbu<{i>P9w$Hu#!R>CA%owml^VA@OT%^ZjMC0i}`NBw?60;z@+`pnDQxaIQeOrL0zqzoU*N8cvi{r$gs zmLYw<+4}$cU~h;lfQ?nXeR2Q4MKbV8QqJx>n_2_!inZU?-z)mNty?m`5K5jXEZ0Fl zZxJL}+m_g|LfbTXaV#`nSzW1ZjX6Z!7nP*m zRvGLgsD-9dgt7w+X$GvU4>Ifxo%WT^UIBc3g51E%DOA^-6^=2>Ig~B|I5XyQSsM1a zBpb|V&)~AZ9sAw~OSNOP5~4oX*uUnGuj(}z3)&CDv32CcUs(F%I<{;T)tEMSenznF zx5!Gv@um;V3VZaC?ep$L1cY~NfX2I-9JpbQN}m2#wPL>&$42hQWfX*HKAssq5wVl? zGS-~uYDRO=eMRNM_|!ve)-J0K=7Nokfjl3r^M!_>L5u5F6O-oKAd^b}oV}oaCbkZt z7>)1O@k5UB@nDIug>~=LShmQP15C~sdBRz+?vK7Mbn2Po?=scFNvMV07 znq*fRy10dTT3Riz#}6+8wE19nx~KoHzkLs>^tatucM$mejWwzCmy5@FegH2XuHQqrM_8qfn^mbI zjGNWIt&ODUm+#|;ojIhTWd_~u%gK=2*Rp%wP)Z2eP4zDC*vpP?GWO5%(t?R zOKwD`hW|;-z5T6i9vfA)ehZ&P->v=3c$R=h;O!i>yp@wHjqRvubz`eMwz)XDPU^?D zf{WELaVoZ#OaENU;2%*0&|FAp+86x3`{$+%K(L1QJ<#5QddFolG@+1{D*o2=tY!x0 zL~G2;=y0$0Pd!@Ix7T5UvoAc5;i%Xl|te3*{`LdbMr*?!hLAK{4Pf1i@O28e? zH4bc5Lm>O6VSWRdRqnhXN>Z1}MW%Y2y^}!J+omxQtoZKxN!Svf+LpA}hiV??-c0}? z!{A*CJ&yToPh3cTp4?y+#2xwGOY9n6xUIYD7lv&B?|e0&(L&DXTUNSRv}*?N>6Pah z{Zo-jw-^x^(233x&}h{Y3Fo&nf0Aoz^^M7VkToYvwXQ0U%#Y!){VfJpU0L^5d$Lk- zuO01{8hJ1F)DQG47|vI%U(?!;>Q;vmeGz6l-MB54)lL0t6{r{GN_>71ToxWRCtj)G zPi)O?x2lej`S8dK$0%l}IUKlZYYEl>?5K0n{W#CUn7=F;H!E(SbRwOU)4J}_rbf`m zpwCd$JEe)Au9>8?lwNa{fSF*bGjxvk&XaKUSUx` zlUt~ohG7dx0e*-=HU>io7g$*^%Ki5G4p&e1n7yQ?&JZrOy5Rms?c}i{=-BqSs4L06 zwpFKMgT>@0MbU(23E$NK!%@?f2kH{6Vl{oJZ4qDnL0$NMuIOE_3I$k5$T_Nt;6fYa zd3&s|r~1FZwGR*nmnq>!oj0l0bn#Dc0DFw6MGMpGh?NzZO-2 zS{}?oui=%XoqTrI7am<|2V>a=&zqe}Lb}DEu#&RAykY2z-@7~(KR+;}>buU)vTE87 zOqlW-SBy=g9>4m50LGC;cbIJ%PQI%S5x*GR6xjL)XjMO(sH^;ly?Z5(^t(%#T>M1;f3E+p$m{OsDqECKE=}d`YmE zzYHla=ZEbZBt)dEw-F>%J0ZlDix#%~GS#x{MP^y7Y-!jkc(}&YEZC!4|mUZ6eGp?oeXmd3|-pomi~H7HP`m2ozJSQ<5aq`Sb5ZD81S+m z^DW(LTgte*v<~jNwdNR4?kq;z;{Hj~(w|nYpB6k&sfkyWI}Y~AjD`->QdSpo9eP2& zQ8a!cmp=bQ|IO{sFPSCAqji))`E{ehbI6w_M+SQ)+5vJ*{c~L;ga3arXdy>`FXN8tk*ht>Htp z-gQi(WWVmO89%;rn~TcV(nrVUTB>6zEvfU!8g+aX?tJkqCAW00;wP&u_oaNVB-!}! zw!p?Oy^>nf?u{W0>0ajCSvrWP|M)i=fCG^u*n1y}Qz2kKoGemusBVLqXEshS5Ye42 z0|}h4gZ_2t4w*7%qDb>2O<&8Zi-mgnZ@$fjp%H2wby4Y9W3x#vq4=pDjqC4>Pi)BG z^UTyj`=@rtmwtf>l6Dg9vhku@6-c{RI2?nfb$0mjGjT%x@AslxLDOE{u>BMh)b2I# z$x~@B{}Uf-IJ$a(+O9VfJzqz|QU7-z!Abqr*6FfZ45qMVmu+$oJyD){?)x& zbMc+Ix>uP}&(*y#m+OocLi-T~a;3uZJ6Gj=h3n{Ze@xo$I|9hZxEB)x~OB6%WUbbduloR8(ewiV!H2fy^ncfd}{An=99hVSTqctrY2mA~zgDV9S8M&nQec~fY z=k-CoTVG#SouS{T+~=(C(tj@MU|iIztkECZzwRYgYP%{B1WDdN&+S2QNz5X!sZ@$+55edl966N{|2J15rx>2pxH zl3o|aY>IbTlkR3!N{effuQ&C-d#&XS{5=p##bI{k8M^N+<_)?(;YH7SJq}r;+FigS z*f@T_nwf)XHHF2#-7jNPb+;6=l=6nJZSn+F*`05hU*63F@cD6TxmxGL8Oge0lasBr zEWOTq8XNkzqS4dK8n0}2zt)|2eSL@bG zQ;bS_ZA0bU6P%YmI@u7D>Z)!qF>icPZ<)8(KNXZV`Kuw_n|Bmmw>Ht1HH)L2;pSdB z*+VDV?>^P|A85wV%G>2$D~maCd7%3~tIM%qesnvHMLU1A8|s9%X4l$HE$-$VUf-du zI%-4p!i9FLR~27nLGapXda9qQoa1{3Y)jRHyM99Y0eh7s*9NUiI@Z1J6f|w9yI0DW zUUjTS5|=f0{nf?Xo6P#_`4NChL4%=SiDhoEm2F5`Hk4DC0pHt1)1*ThuGD8MS$SXK z9GO$rPHypQD~7#bJ>S+!20w2Jhro+fX{az7Xb}xegqFeeU zfA=!d-jV&1t9$vn!aBLt?_K@tUcRB8N$;Uw?AE)Nk$KcQ{esV3tXs~+;M2s7$>h}! z4j9YU^_=SjbLX4Ce68L~QmH4TeqLSqefAsIV^c1BsM|{_->Yy952P~vt-c$6?^Wj! z(Q@(ZqNgIYr%}K3V2A6p(Sx}MitaVAEOEAby-(H1;iqaGmAH)4z2a)uN#QwZiJx+I zuh#vl`=i>CxyWqPj&D;KtAaGRqir2Efu`OVyq`X6|oa_w_ zx|~kD+bw=TL<9H|ch<=+OwLs`(7`Mum`aah^{`!=+ZEo{60rT%#mc1C$ zWvypse?>JMXl(dioO)*ZjP5(Q&H1S~pOjFf6My+WsyD>CB9XM3|8`L8A3b5N>rS{QfM8NSA$r3HiN5|@Sb*o1-R>K3`Zv5}b#KE^) z#kM!is@jX#w!k6rO=hl&Na;j{Qek-e+fHpL>S)Yy*gjbX$wSzJCn3K6H>JC-LbN2;frBmXZ z^k6(kJ^DRhzI%LIno~z{bzH|bI0zZW0iU!5)qM!?YI@-P?ol;6_oEh2f zm&^LQ*2~Qjh1c@M3bAxeP}P4>Ivp5M z{ws+&F|fZNRDS@yCCtpBvxNPH6*c)OS60rzj=+%QQP3L9@Y%x z6G!$ikbC zzOFPE%d=N-`N}nWd-Sr#eA?l`W@Qbkl#{9(HxEHQ1%0hJ#)zrTmoTkZdUMpk;yXj= zC*9IMD{Z)0`f7IdhSRu~$Mwwh%SnrzwN(J zS=I&06j&Uem0Uk!jNYvC!Rm5ZuX}^`GXwO9@#voZH`n!(*Y9Z7P;25ty%}Wgnst=U z;82pK-fr~SfIPp;sd0`jtq5AgWvCLBmY)6(S&gfHx!lkm_|`tT_j$%UO&yYk%&)J+ zlHnM6wJ?yVl+INW^T1yy2SzJ(UY4cg;jjTGWR630My&GFfB5E2&QVM5@*6g3Bh?bF ztI6)SOCoDz*;WJ9|C_h>fswnq@;!f5{imw`mAih8!4B1?J(z$4HqL-2kl2GAFqj>a zV6Z1fgEuhX1YX=p09(QHV5WXmUES^mGDVKsSzl_SA!qQ^WD zt=VxTv+_K7w4g^MXP;S_ef#;I^Skx?Rdu^DWOkwbtNXjZ`}f>)&OPVcbMM`3D4ebO zIvW<5N2{}5?q$q%y0wCY)BvhXavOJ%qW(kT>wVPC;rH;P&9s7tCUDCT- zfPFPR=oOhqS$^eYP0qIIt(6x|=ZSkF)Ub<7r@V{kJ9{3qBC*1S_kXxpCZSD)2c)VJ zgoH-2AIfV>`X86nmM)Jr=m3i)dC{8m7mDr6M?eeRcc$ z^&Q{!Ro@?Je_uGiYRT$YxQx|lDG#@6Q0N+3qTjElzt^X~Tda)_1Ed=*<}3WF)em$3 zpbaJ&~z*1&kZs?8vfSR4H z&8zutS2a}YH-WQoE8vPlH!qb4`9+XFVgd=4WVa*=1GOUTI<|04>ZI+S#D4)ps;XT3qZBD_wMDmsqWFH|%a_W*7ej z4!6y^>=)Hv%En}&eg{Qb>r>);Vg@=TL#UyBP(OmHh;ezr&aT9~G#3eVzhitdGj(gN zSe|f!)o6iSWy|2Gc{1d6Jw%Pwb=ZNx-N>x6yGgD4yo}7~Rk$ULb$6bHnUK)hjR&DE zd3mI8*4?@bm!>r_@2_838`|QlgJQ{kW3!J!lsh#$GwNqpo3%(9tu&`FBANM4Dv1PW zO(cS8bWx~tb4MPj9%@;XyZmF}KIF$%QijadKKpgI!gsJpAI^>0wb!??BQTVF-xg{4 zl{e*TyAuwfHh&k!9D3wXTNBuS?l`xb!K%z=5+>5l_IBc1bdhjK7$<|H7Rfr{6{QOh z>e>7rKGur!f$S+=lv*_r;?mh(74xOHJ2 z-kq1`&nC(0&U%96^1a2|9~Kd^+!>z;yA8!tWDH#h$2;oEQN}{B3Uz4&H6!@qVK6IZ zE$Aq7=|WhNKYQZFl#}JXxizN30Ou0{qr(*Gj9V~`TnaD~}I4q4g`z-6@bklAfROM_(6S)S{GKDq_76^9Z#4@*!B#ov8l zBb2#t8#~IpC*R7?R;CQ``MEp~hmJaKI@daGHksh8<$UY2m2=MR`?GT`_Z-IPFFt!& z=iE+qFG*I;_Gw^uzWZG3n~xLfO(x@=73v#1Z8uunmZYKGw4wv?C11vIADv0wg%#rR zm=?eN`P=7G=T!*Ii_pZ*b1mO->m2)h&Xne*o>NQzBG0YF+cG;s-pxR>jj!7Y#(8&x z&P}c|2Lv-gbg?*!RCnJ?e;aRZRFzuh95>n`NXZTr<}mT*JSWP_y}@22ql7PdYNow6 zDqI>IGP?QLWhV8w6%V8FnoP6H=6d0Y%+=lw&0n6rutfYT`x4zAWIu5*Nv*CigdV7` z!CWutNk){3vxxS#n<25P7~nSUH<%Bf<)#n zQuvpjua|ez!XI|PtFx!l!@@}w(m2AZk#rBIcrJoXrQ7-bsrN8CnyVbDi^H^Vy-T;! zJ!GxbQb_RR&oE8x(U`k|%ja&_7i`V&X3>J?Lye$jRJGB~Uf#NFAz9yCBb7Ss94K4J zk1pPPmKJz9;#JXgXHPSq9=-!62=8;P{m~zmzY_yi($8?QVdgL=7--y-*6W9l?)*dR z&9Gf`tbZ$6iU}A<4OlWoU*CmmOLGv97ghOqX~(vI{Vp+*xLMp8%X0XMuf(nHj?=zI zt^c{HPCQVQPD=JaiCal-(Jlntvvtlj@BF-Z)tbMgKFMOfni={>i*Ek>rTXmZ^CBf( zvQSC$;I~_tA9U1=OWu7}EDrb}+|Vd2N>}aC`4VtVWzzb;nvZU0udbVD=PxkKCz*we za55Z8FwF>ACIdHy&cw=-q5S{5j$U(Gwx zRRk@~X?dq$x!XN)_6BIp<8F!x1?f#rY?@F(Iw)?QnI8v?4ilNQm5`` zqJOmK>}~de6~X26`_!$eC@Ur3;_f!y1DA>}7GDZ}FQO?4oZmH6kkTSxE{00q%;mnJ zo%?o547tzVf=|yIJ$iN+oC{|>d)?=fn+wSt&_Pnt(wmlNq$#_`lV4i%Io%}(Khsf5 zn>y1`(r%dPGuyW2{NVNzBt*~c^OG&T;hdl88QC1?XLJOwzP!GNb@xKaEG|uJ__FCl z%aSU?UFX+OvbcuYR>0p+bx$(&xW*q{?CW~LMKC~Z9C($K5_;gkSTV|3NRbp?&I z(*mMC<4QfE*8Gs%vQ0##`>iL@7A>O9mu0iItYu|OsGCU#YKttcS~Qh>z)quYetIe4 zWQo9y7A>!u?KF3Sj&^@~4V|oEi;=!&M8~v6>$|9PKJA`OKYQ)nli#AX-~H)*`*ea{ zw1#^=y@qok+ePc>SrZj5_R$KM-szwxJiIK5uHOm%h(QO*NK7@znb~X__(1+r7++Cf zd-FYF(4RlQ+Tl2_2})Xdpw_T3PaW6&VRh)_hpaczSKML2*}kYZ`?hFLzmiWWr)}pU zvh2v}6jlm-DO+4d9sr0|U&%9QjoUfq!|^fSGWf;?+AI?4ku)#vA}g2rBDu!31(y)S zog|Qp?xeuLX;$9ckuE?WXD3=O%~1SJ&Nz+Zv_35#<*%P#{yFsMy3d}gqgR`|*W8?bvsqc%THf6^8|C!k zp$oc8@Yy@!#EkhK<@pnLHG@bB7i?rtk)OT7c`WEm@C$LA z)`1&A7R`(c8T2LW=W#^QnlLFnWPWWzP?ag51lDo0^+o1uO|Z5B=h}P;pDE|XNI^lzA z>1OpV(n|02%@{%mEuCnBblXOLN@S8-?t2^ELZRF0boj7|&0}I@oh9kmL$6gKAr#{O zrSsEi()6wLVOr)`=>7Q#%GH;!_#javuf*umK{ zO+2@7RP`2qqf2*U*xW)1-ylYZ_}$D?d9F{7g47X`Td4KVc&a5?s;^r)I%e`4mPTc7 zX1P6Dy>P8M#?o7?JZeL9)w!nhg8_B$V06*Kc?1P3^OA+XtM=T{m+X~Z2r`Pjo^p25 z5AAxr8S2upm^wW37J46DB%Cf=bxNcZC_r z<(sL;5BJ<^p&KaWTeKir8omhjZMa?%VndAZLuGw~()=h!N?m<+%yfPl=7qvVQrN=6 z`T|%BCN9navhR87S&##OiLUDD;784x+l+3uK?$Sc1Ul#0s7Di)=G3GC$dLH*T>hRZL7%sq9sG?`$y}i9nDv=cYO$ zMb&QdiN?BP7{am5Ad1d|)wzs9ed3mMp7I)vxYvT%KIbPb_dZE%(S&xO?d2PdYmi;^ zn9p_!>$dN* z(%Iz52tVW$lxg7MYi6z2C~8{IEKZJvF34!|6;68GKEopSQ+6x9KYfKx(=fjJ_n*B^ zr~Rz%e62sE?EH;Vcco&3Rt;SD(^{W)&^rcG(?-EzzNIU}BvDe{{t$XE>M1PA_wXS$ z^M=$`?`)$ANO;uz~0zvB(Tz*D!lzS0%ejUU_2z`_q;h*yxH6xnGyg*Aqmg|2P6i<2 za|V#LJ{s?AV`rNRY`f6$2HJGI69#Yt7L|PYg-a!Gf5)IEDOy_3e3J*{idMT2LSs*< ze!F8K7v$f(kkp=^QiU(sdhY!CqKn0JySLZoN1Z9=V#hS$oU|ZK;enA$*D!Zj%)zdQ zi%BSjQp?F*GKTk5h91{*1C!VJFm8YgnyyW07cbPSY|Di(KWZN@5+=yaV4)_}FzMzG z)W|fej4kAAbls%D8E@Z%JY`PIpccySgh{?c>F?6Nw9zI|!j2r>bgqmS>a8r|pS$pk z^aXzB=2;ywA+*&l?tjflJ6oC5obHAb?eo&nSV9^N^8`w1Cudue1C!4Xx`!oj>cEp_ zAj!a~bf9v5_Ie;DRyZFg!^r&q)RgaizTpUf6txC^yBN@IE6tKlKt$u6@3O&WgHpIi z`mC%_Zm7K1Y_z%WOY^DM7{z^uMUTbGY^S<(@v__L*53vSXbL@>{X-O|Md)+*v!Nx1FfFOV77eCwz$7Gj{=%do%Ur zl?%7nuo!+*)?z^>SWr59*IAy3MkJ+C4{gl6RD#V!MAW^|(V0h(aM3qwYbe{72=g3W zsiTKn%UZZ>#Y!mdgtit-+&Uest6CSxLo6@~9}^eTWc^JSjjp@iMlO(bW`qy&hf62I z1s9Ms%Hro(1KZ`s#JySZQgT*e6^ojLUwe6q7(s z@?75H8kHWVtow1!6;3)dT`CB3q88G816CZ48f&Q{!cLw_y$}SX6c}j zu)S8T6>Urss8!0dwKA&zx7u6XdH&hCWE9${ z3z-N#|8Q&=k7jmIN|=ZOGhb{ni!MC-SM9*g4B9e0=kA!n%Hp<^=&H;nb3JWec-ri; z(X7n!1W0tHSfbVodhV?jE!PyPiAPZ0!qcr}D4%AC3@JmOvk5R0(+l?m;Xd1s(pifH z(S>qqJl(<}_Unsmmx4Qi6^k&%PFb+Sgr0AAXNh6r%+hPRh&oO#&&Dy|w$LxI?VAg2 zLvWVvtW{Hy`r%9?Uy5kLm8~39ZV5fkEI)rhX?DoVjZl~HUZX4u+sMSByArg-ELgf} z!c{Ijw#H=H>~wmF7QC5B(`R-ygSoE-OYDWQvX8y{vnh2!e%zj2d=%UTYg>&O48r_ zq3sLpQTd(o&EoZ|)zm+B8Gv*-+=q|hTAmH1qgZ<&bAue}b)!4EZodskNty`*p}`V5 z`rM-UP@1EOBVnk0J_|=O{930xDnxeF(y;3qBA=&%Y?cuPWV9r&wefzX{9^*z_>39e zyflZPTBTB>KU1tU3C)aQRWguQKy{ZE0xa^Hh}@Ml&ZZM`RVgIWw^Gj@Ha_=o(Qetk4nxgqCVk9#HrG>>04US%9ogjL>PfE z=IW2v(pj%lsW4e1uv!}HrFrLH;gUvne*2>?El4oY)b2Dc%yCIoG0toqo0Mu&^_T-> zUIUd-;~Gg|Uc#)bPBojPmh$fr=`+FRkyO5pTG&Z&&9nh&Q-iP!m-;#+R+4Q&Bhl4aW*TuwhMCVS;nFQ(V*~KIYEE(;IzY04vS-Gu1 zWw^#_$JJhcBi|oH2vF>O=<`ZDX?ndT9IsKhwAaq~4CAjhcuItZ^*31^u2pr4nDZwi z>6|0cAPa3lqBlHWDQI+ZDPgORz9^t@Rq*#%OS*GhExk4fRyw1+b4~o)smS$hw5V@# zmTA}O{l?E;TP8?FTRv~S-?n8cc}QR{zx>nMu#IsM&t!%9%5$kPw`8{Z)5;EFN3`Z# zN^W~7T={9`?f_SI7+y(8iPoP>={`a^4~Na4R*Psnh_TxA<;$<)9pW3@n{nM@^>%tn z2t(%iN?fn}?tRpajlS6I*ZGL&>AQ(eObQ0VhjtXbrEKQ)m||e z`2*}V^L&1ZK+~HWXuNzKG#uTMkwpd=f#kdMY6>hq2ybEOAut_4wzG2z?Oepr!iXkw zpU}G{`*1CVixHXJiePr3?k~+`VKEoaP5YPXTiCDD8S4!2hgn)HN4^V^t=$09&hZtm zBNL_kgrRQd;;=*L1`y>z!S5>NbC2E!fw(pjerleL`8-0?d(!bbr`%`@A}=xjY>nHI zeT(6d;3EQ)R`hk+7S8j|Yut{5E=*|rgliEe?n$QzPS#G8VXZvqSa~CS82JVFzkDTM zS`aHWRcTx#Fk}l!!u__6%ei-1E9U2m{w)8!Q_TF#ZNvwqTN@LWcWYjvhs;Mm`m#e$ zRFtQlOg|IVNjP^pf-b6Ia@UuA5_7L#*m?a*+M{(Q{jWQzH2F^wl3`x36WjFr`_RAp zzD5h8m1ip{m@lK-!->a!-f`YcEB58LluB?`No%c6-ESIVuC#i6B6AgnGm{6x*Ql!T zl*^*puKP}PbX>JWI@ANToigx3#3yTt5 zf{iO1g+g0<=`KM%%;$lvewL=)MA!B)=L)zBox%7AH2HELvV}^W-{|INY4m0=@`w0G z36CA`)+~CUrg-o=@Z%7F_W$>;O#5`)Glv_8~mgr1RWo zI4e;lA0wI*h`qJsyr_F|N;sN1E=E27Id+&kxoIToTWildwc);J71QP`Ld&!5c>Ezrk2jCgW?`4A%Jk6pEP$qlxP4_74tqa@oqbzK4|>nb`lF_DK5O zBN_2xeU*f&9tT$2m1fP&w6@d0Cidxu=FZg-TC_$}YmmExWFOW-R9n9O!t&6vYz--8 zvjbtFHo|D?$RdW4H|e=zot?gygYX^QrYnt~v`YC$YwUc{T;mg_jKGF7v(`eaJo?s+ z%}kL^gms9Y{$TLlkZ18xKi{^6bj`&9@V7^7WJsu`_1-zpu9A$KT(M5he%x<=HeE0y?w zV%Jd58UO47DvOiT%K3U4AZMJssu&uT{3;DJc7?#53MkjZ3Mf|^s5V~oPu0fZlC@wg zs#p^5PTV-I*XPoH@JjQFV^L|MSQsCR3`S$o07-sbtnk%~uO_?GQj^`3%D0+@1_OI^|o9hoB z3*K0Tay<*L=`iZGG|^M3)ZzmaR*QF!ER9>Y7O3yTLUra{D&}px$A9BVy1;v!yxA|D zY5Xn)!(*4FeY1duclMZKJ|yXB$_0Rov)ZcI=M)R(l-2e33KjjlUa0U%Ip;pR6b zd4NA_VkM24Jw;4f7av!AIv=C_y+PK$dM(M#l<6B7){C8lu8r zsYs1VR=c3olLo=L=ZQ%v$!SL8IwT;G#>0^%vmr_|s9;fFhzoRB=!>Gb@yQ^AlIHFi zEL8Yc>m4kth>HD{QmGivoEjHKCHEI=(0H*>TlR&~qFVQQVTJPXL%aFBB3e=C9VFGr zXrVB!Nc+}TD#QmPzFu7FB}#ot+hvX7P3h9`z+edVFRixfh1#e$E+iO>hTD*dTlX$4 z2@8HvsFlZ6=$nOFjo36!08-poL|OVaY>*_i5*hd!Blb1sw>DT()xRuM>u;Ca0pf&t zl>rN=?XmSDEyOEN0Vq=I$1gm2-Y5`?w*jy8Ma6;zYn8GUL*}6g3bxuI#}aj(D6S|J zR}=ws;|u^Dm=G@3PmV=Pt-mSZwFh57t)DEHddlPCQ5yZ{pe*B7kYMA*zNkKQDk5NGv1njF>_cNOKDYJ3#*ST3>J#04%+Q|#D9L~V{Ha$KX&6tm7-sspx1UB(J5|;g zN%-do1U@oK%)yDJ@yt8os_~2%oQDY{BgSe6nd3o%E=Gina0p zPs-#^B>XXCCzhDZ(xJH2&*V=R)L}C4)L>U2Das_WRVwvV2vq=Zg#_iOhn7{FYbro^ z5^z*WOfpKQe^#>Mj5+9=x>|418r42%%&a^JIjktGD2gk^Qy)OkpqBkEql@)ZG_sp8 zhmBv6M$A@yYrQclvYUO``JQ;M@na%Ver%tVwBG71LHjV>6~L_}G=7?Q^|18@G}zmZ zMAeIcwEN=HKy~IWjfl;b)4QtEchT$C8@YFNXnGes5BU7vDU5yrf-|5)nGF1CBtBHK z{)pMUQjvrpnAxb>I0>&LUD@=zehB0x%uJZ99~>>TS-j9>eZZXc{lW<*4UG@|fS2)k zOEtOKAkk(()nt3hXp=iaVEf1fsGjVsREZm}F?JP+55||1?Gg^B3e|}+#Oq0@rZ(;j zp{LEjlkLNddHwf{P#Lg+sd4>xAbll0xXqro+H;3J zciHpKN~w?T%&Le=xl*RNDhYHcS2WR7d|Is^6HMyI81IAk(vb?-ZcrGD;8w@LF(xSG zi=D-3f!M|`LVls<#JC?cU(2Omp@`(aIq){$L^#Hyf2vP93#JQ z_J%H9usw_`uxB)iHissAZQ4v8MSSwH8K-wPL=NTgo@J$e8!aN+-^%4wAu%P*2bmbK zQj;cR+fqGKtHB=_517i+RI7vlPFDdU+!tyrCXmp@YI zZHYL9m6EKkCNEW%PV|CYqn3Rv604OO6qg2}xY>QxsiV@ikz0|0X>pIF#vT(BdxlH> z#j@}UI(=!tCTZ2y2V2_1Oo$-xN_;?b8Cov%Y11|B8ySY*jzFrEG(vFLgTwtM_4KF* z73P{^^|33eD7JJ`HCKuV9c)QS77G@&; zmZd;D23Bqqzngs#NQ%#Z@F61xiKW%YR^>maTwe19i-QkdQqsVSM!Gu|PmTkCH?3l$v_1wJHeY`Q#%wcg{go16DVN9l z#GsL7`)Dg~W#lu50}U1xH#Vj)uNaCvBT1qkoKJoVI{cdCJ=NsBIQcDqOCsji-&U$q zH&>@_A(p{Q-$6A-8sUc)#L4?mjETv~Q%ljW()REv1V@F8&xAKV3|RyL{gwK`vG7rd zWE0p^A;uA}EFyxh!y*1r3R3cZmPN`)a@f!kGo37TskKhi;lt8v?5o5FeI2F3cv@|a zr-wnfVfw6h`@5)Aq6O`;LnFMYWNDM%;02{}JDIZRpC03g87T<5fBC8&Ozj+*C>Nkr z{m0wz1Zr=1@$L?m5J79`9f(Zi;_t#zA5XndY8T~+cBcg#@O;b$#q)&v(~&M3YZXl_ zNrwrejhZ?r2-aI5KnBHnONw{`!&L@<+AQ$f3QDJE^XK4r`q?R;$)KhLp3OMEAvG9` zIOzsI+Sw0TRxlq)?0FRih>fE>#AWUZ(2Hm}cx$>;+(4-piG~1FheRoITN$iQ_6@bH zOP*d~2Fuq~sFxu^Mm-C!t4f1v6MvHw7dQIi)+$TEn<9Y0%)4TmJQ2Ve1IDdhL)2qV z+-==`O#$+}9xQwBDFA#?FjW^X{FO?5FzIwke9flRJ(_WPoKL?7k7dRz7yC62ReFf- zr8SkJRBBitwr!hajemclmum6}^j;jNR9?p`<2`^70nJRH9~R6?w_El|D1Nt+5N5(I zRK|IU#^dHVB7c%dE=O0At|oQgR3A zJ9$^Lu(Wa#$!aE?_=O3Z`dtyZY0eC7h}PqM5KM}nH6gMgtk+jAGXa$))i8&Q_nCMD zuo+6`spQSLv2+k5j+48qQ}-8dF9Fd!ph7DFRS33Q4jdri5Y3y-G2San?;sX`$)(e4 zE}=-Lb*gPb4W;Gk3!u>ew>~f~@GhN6?R7<1YOTmLA}f#yJFtRcagZ5c_8rrzEZ;8J zEv6-di^Xb|PR__MP?ll9RNx~Zxr!Mnm1;IiiM^VQF&RaH!@RYDh`9a{U7!-0jg0sXWlRVj>(3ZhO+ zf)U7?gtkbdPEs4oA~nYgEs4k&)Hoe_D7`v_S71i(F`H{V=?e~OCx$drg&NTXP@olO zoCk}FdFkW~R>M5?pZ9w@O9RZaGS$h}sr zwV1IxA5$A6%FN_q?O;m{6Rl}n{!;44EN;b10#;2QV|uov)y8@8!JmZivbZrWJZ~(I z8!LyHA1naBkqBom%SQxaN`qq)VN7wqL33rbq3kLF{?lBquc#4?apQakjGImQ4{`9p zN^ynQy-W^`m2t8;PBvz58=)|VV*6w6RbNwjthdJK&$C53LT=$u%{r8Yjf*cA;T(Je z8x+-0ncFvxl(Dayq$XXXv7EKJOH!<7c9=WQkaf8=o!($rEW>2sz3W{b9uF%z}fmFdldUHfAj8tE~V?mdVK{$B;gCYVahL(U%)$1Ji(8d zBen5TpLNE?Z<^&Ib^1GEPzme<%}bFEm* zRwUne=E+cjeZ33Cg+y3(pUhf5^JHlG%#-P7tXV9Rz%aJf=#gOboJv$c%wwzI5jUh;R5gb30jQLfxm##&IU zjKU83r7pBjcrzHv zVjfdn(PmBtj&(oqukqrAC5D(0A=qDSyjpGilnKj7)RzeD3sl`>lXK&z=>LeJG+Kaw zu*|m8gKTOM@*|aNtz=F7$I4x?TFdONG*&}bEM!(Y-Qr=DPqq7(1mz*!hrXh z0q?cYmZNR`%}Om6mz!ju{vGAdBQ0#s6Kc#+U@6y@hE=mgAVL_(kSSbxpbQBQ z775DmrvlW!qoD^!y$44HewGp>{Po7OS5#Of7{^yakU{|gYOPK5jTJ%oIAM`?YZDlQ zW>OOi5}TNMnU0STV->16{ANfo^|JI7rt+zm9Sb7U|P&GfrC}ax4=a- zs5hx868Rd&R8$hIi9K+Go;C1_3aKfYrSRPzQiCIy7Ns?|gSNvyY_$s1Eyo~a=Baip zz#Inv=yALG9gUEvcUK!9$5YRZBX)lxstN_jK|@s_pTl_Y8_8v(ihN~K1e%kfAX{uayUT1x2Z@XWBnxEdy!RKzS7;~ zByAIF7@^rZie=D(%2cYCQHps-*_cNanPybSi}BQ};*VKPmH>txL?xaQ4j>f5 zwXhG6of-*@${<}sIPXKU#;#3ST0Q(^w5DLqgRE~8Ahm2{5WgA=kWnLRmO`{KebhWi ztl@Bb%Iu8_W!B9L5ZQ5R_fEhW7|{JEy zmY~--?U`letGSunmNqpY%^-O+hXt?J-Z4!=S_@~u-qZIq2_x!hUk?HMTG2eIFM7gE z90@!n*gzC9$~(M7R!BMTqQZ7q177t|P!3P8Cl(`PM0m%vxDiyTeE}Ow$LMquw3s+MP zX6=3^Xf>MtRV4gVCN{QI+w7>hd_IVs`;70B7Go;RjG;!aPf{I#AH;}B-v$91t^oY8 zG@5J&a(Xr8@g-nE7|iyb3=R&8W7DTWO*P5(xHPOR{e9_wlwX+`DwMMr${__yxz^cu zcB`zmRF1GFsS{V0PYhx*sK!&W*v3;ocL6e<-3HZ})w}))M!Wua>U9*UO0}^^9xnBk zc|U>|FCb^*k;&L&2El;h%(FUun7@?h6f%}dKrTh-t<#60@B4e><_9dS%3RVK?T#3- zwJlbvi(@@rJj-ZqbEjOB{v;QtOIU_D|KzKpS}zyPyz7Kgaccr%-}GUb5&3~W1V}`N8i~ocvBogr?eZY242?C4S#36AxuEp2+Q1SN^5r1wZ${k}tbZN2 z#=O}F(>N(BS=*s4Wl71&loKT>UT7SN(g`%8eTde{dTxsPU-b(c6P&kA!>jAtbWzhtOud z<>@dA{i;)cZ`poh;r9^pD7+OnX49-sq`!x(h*nm(t@NvwC+y2?_C>z1CL13@XlQpp zudxek%#Qp$n)EsP}=^JtiCLhCJevO5n783Y;+BglH zM;4j1WlO}RNOOS6Doh2l_wiyz_GEq9$Yg!-Jo?++zM||b%p{sj=w|(sI0uxpD<}ee z=dse{7O9Q=z7QvL<)tAxvsI@)9OcXTVlZZwm;0B@$TLUyYsV4rNLkEh_lBe-fu!UO zia~OmDaY||{?mF>|J|~bYo|a;v6Xyq;MpGn{@#8Tb}*lb<$uU~nZGnBCaoxm^O$Hc z(3(%?$3y`nInW`ykVv7Td5WfS5=qQeF12TZprrE{_x`LD+s0g6)$I#u@VfIHw)hIW z8mGPP@XW-Y67%u48(&eaIA-?0Vt*O73n!#6)!BzFuBz$1Bc|9tsFl91*mj0N3JjUm zt>58YG!TKH3Pm`)$XlMc!Qxj~^_7hNG4W+v`F}oNbK2^5VK!xGflLrp9{e0wB*?W@ z5$b3=OR-;mvIy^E5d)n?cQ<};u;|YI&!VW!KH~nm9uBU(innYEKn}<(k08Shna1r& zjpsk^AXX~LlBqS^a?3_KkLd;{Z*0|kW%mOaDTt?pK6(Gfvri&RAtmXBnM^!{k{918IyE z#-Y^^onj?Lhk9)@Lz+qGA*2<)h3`--xqof3MN2&OvAqZpLn4;DWR&n!1k%~t`Vi8H z^4yiyTyH~7@=XY>QyJcTO>vE9ZKBi4YTS5^X$IHj+S0E1m?p4tb-twE`bQFIJi?z$ zfhb>ZVtUrjm-c)q8{`txLO=``v0rJ+5A|1snkXpA`{A3Ww&Z=|(yxU$iZChbG|Qi| zCLo8)@}`wuP!lU7J1a0aVvsU*@0W2ye>O?}(nkr_`gRx^g(;a;MGu%v^R^F%qI@_M z(t3e_q_94ubjv)QB1!rIP_zIXs@$*jL*4e%8u6bhT*6YCiwIvOIs&WTh`bXVq3H2y z3Er|v9(L26nJwuw>yVXYh*n1QeEu0Jsu(V9gM&@sJy`n@5Hx>QlaH+#$;X;Z8}E5z z(x1M50EBD?)c|pyl(1*BM+whfx@i{fG0A++!E&$rP)kc@? zZG^Cprvu>ftTt)>w{hbirQ(!FrNaIbZ&t0A6iJ0aLNrvVF|WzhZ#TQRhRtCi$m;Rz2Pm+V!zga|FFh9IwLG8|1(fW@#|}%v zwo#(79VZ>O!^|GlXGG`iD(DnwS7P-md7f$v#btKX91&0dL`@Dsx1=?;_p{s~jX@hW zb_?5)_t47GW7syd+im!boqW)gZqDZn-1Na!DZeqJrqR)Ms|{+%0xoIfl4x&NN}nA= zBp#4FP#l}U*XaQiPP6@C^QpEj!BHn`v8rzi)1Ba?nTR$uU zWPak^LKO4eXyAq4hXv5b!lI@RfH+P<(#{q%WW3CMVgQ$eNK+J>9$P&Iu@}>1Zl^%lnI=uDM)xwlRO$lXU6t+LTu7Vklz>) zY+%WH^}jVP)WT#Y{cF5$5Q3ABBkNOIhzBTxgVolxEL{!Ao--gQ4dP&D8tGtp5T{5v z@hFGZN)^T=E9c5GiTehJhOt8>AT_2Tp1t<$wKbJ4CShb*HN%iF6^zaC~y98{>J$ABI~D9AF-Ra+bNYAa&N=C%MecXc`w&Rvb+ zpxWFBXE~&QaC%uph!F`k4q-Wh61TYP8?RuX??z>Juy1R$EyD7{n7dklGEr^rYLFAn z*~0Pfmq=T*GdGM+aUCA z?jZ_pvPa|j1c7VW6e>!zFl-b)3Rj-n5I1+iA$eN*WTSQV4!u;HcSsBjNxZx*sh=9$ z>=q$b^A57glF0rrX3eS;rfPF{jh$9;vQgv_;}#<~+tz6;KGt}!NjdN4Po-5`I|&uD zU>RQ|OcAQNafoj1yZ_Adjw za2TUoMB?i#qrH1US8$KX9H6Zu$@`^9%okr?sA77VTGqUuwhPCblX3F_>=8u(bU#6j zcieiQ+S*@j9k9V@v6R${H|i+4CSf}8ZJM%QLR@n{DeyDwLyf@cQG?n_3_1q{Nf!FB z*-^&<|5NqN16pUBhH>bD<(D6YG^s1V!uq)0`G*5BPY0QKZPSDBCU9n22>WeG86wiX z2$pove9|aSzBs@U?kv>|4`Qn?`K>KPx;mq@>`!=ausYH2Fl@DWEmvE!kRz3wIj{AE zqo_DWoa|A%;q}?o1;4Z99WaKW;d{ zN)-Ur!2}#+AZMvFOGKR0Kd~68&*?X&hv_@huvQaKEVUWR#KI4~`B2mYX$qEOn>U0~ zx5mjfjQNu0rXR-~KK-igK9GPRNs_5ff}H&-M$%;Rz&Puv1@}R2juU0sR+UOLO&BmP zjV&xl8pLd`08$6?g~=P({WXb_MiQ^E2W$YLsf}8Avu&uV*#j0SwPkMaI6e7$H>Wah zjf)h$%yGO;Feq91vl{7)70=a@ARU|gmg5?=a4)1B>BF8N7a1i^iqUFGh zY*m4tNI6$eEiU%#hiM90lQfbiz#ozUDD6-*6JIDr65>q}t}HWM0-VX2?Cp(-nH^h7C%XmZ zmw2LZG#*YL_zYW})=b&e4K>yDOkAUG>y5-V@RpD8W)GShV?6gWQdd<0a~de=VOyqc z%X~q!vt=;FPQRf)^e6A=^c%`(@gfEbPO)3zwe-6JX{4Yz^_s~&%3y8qZ!TSWI62L{ z5Ly{NhgMvY`o^FNv|AXmQJ@7mrGbh#?!e#L4YyX2NEXf1P^_`TStZc0d^_%j$F~r?uUAP+_8)Rf4rY&fh3+g?10hOdogGlc79J)AfB&Q*AaXgc}UX{r#t)s%qOKO_My&xZ7VJX3Cg{5jaS~f!bUtqG3 za=5!?>0|r)!Q|xk|>BUhqp4sb>ER$KBwk%Y%Nx#~9dNoq_9P+t1 zg8jay-}F!ZO+rMANHJbV_N0-QY2(i)p=@hR+T8Sq##RPMvIbq(n2C_{<8=D7iAE7Y zaSrSZ2i-OX+b)214sk+wjI9xBP7pLMWlOWoQPxNxwNR1r8q(yGf={Ln$$&P=@oik2 z=Y;U{8^c!{G4rjSJJOyJtu~ezps}rI$p#uHTaCjFyV}?Wtx<_FuS-j#YBD%Lx5VET zYylpr3{&H@&6rrG__HYyJCH>QkB5!>X|nd=6Kx5SR*i4k58trR$v;NM(&1I5A@ngJ zfToEK44^?)aAiOc_Rkl{tBwj9n;4p)J;1X7XgVerSK zMU#A(qz7P9<^4RFT(OPTQbuO|LyarjmV@bCTH8vqAIC6ISrK7`)7nv17Gl6VupSIm zOgN1zDBJqhc-ZtOLksy#=_r@v7b2(Wze~|tjbS#hl{xn7rbIBk%O|{#McCrr?dgh% zQx1PdPm*;o?Upc&WJUzWGM$ni2%*_iE`sI+LugD^ASAm^er~V1bYY<(d0<64ceFFo ztOpq32gYsPE3E#6A_Gm4!0f)s16Uj}kQKrrWCc5(HsG0sO@lvs%1$#fXH;I!Pvwb} z)ajHkZIew-n*=6%rHkU?Gnv~p z?c_tV*CV1y*?OC8JGfZCq_Q!ZDunwPQK(^Q6d}BFq<0+<3W9U>7ODfkws)(oYs~DT z?N8A5_HSF)nAxR;Y;$p)eySaudq+y$9Q(r{hv}!{xp%bxu%=%#XEgh;u=2+G84d(G zss#HlMrQLjlaH{KX}jeUJnW1w?IDukDauhA8o1BXI$q65#Fgf93Ps^G= zW^yqGdhH@RUjlS))o#MT3uq9Ky2IA zbRc|u=s8#nEvY%qG#lu0=E(uA>*3p&YC(Kul^bPtoSh%om!2GwJwpk26%3kBYlDG2 zQ4KNh&%+@^6t9guueg6OlO|XI5dQMh{y~$_V6-Z87rn z*GwxuRGrbvQ#|w9`Nk@R?N35&kXAe+uOVZAu+5n#)!VXcf+OIT<$023mf64e242qN z)wyHrDtUtynz>_T{$W@_qIpFN6T(@loI8mKjxK>1j7G$9ROzxk$_+b+v6a5{xhDps|O5PrTFL>bf5O~iE zjpt6NFcfNb3(g#&bXqDuVhDGfW`bkC5q4@H>mb%N%JpxVC~L7l)tB$;XE z7`x4SSQu+QD?>^1SvQnCYA%M&=d_zEZa$|-DW*fE0h^jD6?SH@x`T1Mm-Fznn`by; z&2kD0DgW4%!fs7P+b7%cgCZ9vzvJj2T$L55e^MKs(Bxu4Rwzov0pY@oc4=#1kPbnh z*1Z@e&3j7g0lcd32PJ@TM3?J#1ma}5!DP8_TGf!8f~jKpuy4j+J;;aDCSqSw`-+7F zIg*e+m?KYTuolqZD_-@lGIlH#%Ty58sHEco|I`QFzNNgre$r0Oe43pp&iv~qO&o1p z12Sq}!$r2SK}gcLI>UEA0STgHR2zFqiA;cilFIO#sG2`(&RxKb1A*M-{8+j=%$Y#o z15f$@M~0Lb*5WS1=zvro!eI{PHz z!IN5{!Y>QRYpW5nDOOu8XPKK2C8bV6X#O&B$g@T>uB857x=NteC0aboy-OUCD5P&> zN{<2Y!{BI}qEq)2PlL%veNlXh&X6k&Gj9Pu{1XjAp4-e5ENRoRqs#zE-)7+RHC0%z zyZ08)gN3U-4&L-BYSE&)%tr1)1E$ZOuu3m5_nV;7WKK4uc(6j`wF3e{)!#WO#Y=?TS(op~zihxUBY zRchlObi#>Qdbb!#JHpwMf0Th*vYjTNqNKPdlvrEI1$3G0IGr^_!zHq?6m1yCjPb6y z*9P%4(i@!In(}wZW)@+^q>*n>9eRwEZRC|zwjEr0CTWoQtsxGkprTgn+)~@)Dg&za zy4pgm9O8W5vR~$1nn`o4AOOfWn<&LISnKkL)1rqInOHrx5F6JOCEy^P3a1^tArFBi zdl#l&=8dZn3YjWecS>IG*>Td?WTK{RZDvEmRQS?+4Mg2t{yx(^F<}XLRQB>gnA69Uvp z?Xv&l+TML%yyTAm`){uP*~(p8PyO-1U!UB6?Cmf0|Iylib^MOYS6=iV|FeJi`M>+Z zU;XQyfAsTBuRQeaD|;^eFIM*b;KP6O*SBwa=zsq=|MU-APk-=#{@d}l=YIUH?{E2E z|HJS9pGUTSz4g@gf4%0v|EuN?fA>H9$LCl7yZ>cn`LEVr{J(8nzVZKh^KZt^ z`)@e-lLi*_Q0rI{+p?PzbW6bj4g%NB1b*AbErfJxzYYY~`TDvi zTQ_s~G3@v78;(8KZ4~>W+ZHP98)R38vlpV91$2j#-~ZHEBqw&#Qk-0)-a$Qv^cdD- zM30IdOY|7kgLChq-gWzJ2skgi{GZbQ>i>Q-m%6A8y6P;PkKcI*R=5hnFK`TL1OlCS zzJp)gG^NwnFQq?zO-r~WcK+GtI-z}{4L;>n9zQYNud>N*?$wF&J2-z`=jJQcYxGNL zb@fEJo?Iu^`}G{*dX(%^99>kfHmd)Zx>HN1_Uq=dd&#LjKgust>*qkgr54~PbDSZDixm4CviW!Z~Ie3fCww&*=!@X+bzO9E^cT@?KCC2Ccb#6w zt*>7q$raJpNE)xtNk9huR)O!-n+50aklx{w1 zIIu~>KYD)F72VnpZrmt-Nl4@W^^RUj-nV$E|7>lcK6U$nhxYB6TzmVTd-gwg|Gooj zZ{73Y&|4=(Ji`%?!--Gx6<^Fwpu9%p7=$;=uxcC0Qykg?d_dKZd8~=Fi zI{kme#P$34?%V(1o{it%vwz=%ckjJo;@16tx%d8i{%p^I9Y6Tqp6_q`%ddRp?)CSq z|C29Yd)3u@)?IV$g@ql(^Kakt;Qe>+z5lQ7-bYzC{@}sMyZ7ze^B{f;J^j^f{JWKZ zkLW1TgL*t8(Gf9|^NAI}9Sdcx{-PcydpHAz6}-l375-p}F0J zPt+)SE=V_fhj>X6%u^iRr6dLt!8G}mvb|%n7OkTF=(nv8ER89Q`g}}}6Bfs4c@~Bp zKOlY3p6M1z;>IZr6+4mpQQ8!_O^;nX4n7$wZA5C9*4~vL?BL*^^VFd3LwJ+{SmGcw z>>{BbHq?Gu#^FGeJaxnp;&CQDfPXvN;x)II-$sE z;-)Q|29XobQ$RI@6C8vBv`A8IJX7rN*Du(FZ@Ip`oF+xlgj9MIZ(}NgsUL2abDWS> z-*`t!9RI1gaYV1gae9Mtyw=VEY^#kAh?@db@sviNZS8^}%bJ`a0KD0^@1U}gj+El3 zAwN5q(>^qXJyU9NQ@v)tG0nb%$E@(Cxj_$&R6{_RqLgauK7G9*a0O7Ajjwtzs_b4h zE+9OfKD=CYEVvofYPSueavQ}<8U)nJ10_uL0x4_qK?-fG4h?0$rH{8(VTp8j?I%rZ zBD}Kmx4$~euvVw;RpuY-@rsoI&dvZ$4(?V1#VbI_z&6A%k{8mJOV#In_Ho()X~wO9 znLVLv>|sz>f6d3nFO}jlc;KX}W~j#F$xdyCm1j^p6+YMJErmgRCD34nRn@@!W!zxl)Js_K41G zQn@$e@FlF>2+P!1oTZ-1!gKG0o^xZ2r>GQ-$+Gl8e=)r?gf_Xc{uPSQh|c^SU$CYV zY`v_MZ?sD~VPD=Q@-ard`WVTpj}7ZFszujV44)F$KZ1}tlXOPf)L-;y-UOV!LB@#Gh?N~p?rbkuIu4*SaYDq2= zu4&|SsEcYfRL%p}&%zGXw3ZY5k6A>0>SV*#AXH`58!p$C2 zCQW<>TlOO9{kR?<8SvAcMv6FN<(a9J*SRp{ob%ziaj)nf5E3)8)j1)0b3KpNQKc3o z&RwC0Mrv9}GYu`rbN7*3OwvxMn4416K|OvNV3s*Mg;wI`Ai@_i*vdujrSY&t0{fyx z?bm$MWrS|dbO4FT~n!F0}> zVU|YiXd4{Vb7+XgyuuJhwKHRIM-DIrD<7;WZJ*v9WlfK~{&Rbvlh6ARhVS$5K zHp1AOHI~%@f8&gLz73~uBlb4JK}D*Ats3fq|5{9_z1Pz9rnv^}jeRwi1_+R6sDE8S z*L9TFv8y7+cff4zZ2jOP3M5C7lbGLeF1g`6ca~Lk?++VYR56>!R0e7c2QVpuRa=$A z@6fs;$rZDrFtD!3Y0(Oetm}dLJQioUbv?jJ@!XST^_^kaO!b`so?1X71T5M4lZFUd zBt;ah4SZ)8Lx}4MaXnd_oglAr`m(r6NT&m!ygJsoyk<`GX~zwQxWOz=$3R(YhO@Yl z5I4eVYg!(IVp|fZ*@7Y7VW)m&`FlhD-Yjk)#0_L|Lm_S`+gVb#(?jYXF>Vr_Z1}iH zOyFd<<4HzF19?UxqA?O^b*{2S#))s6pf!waXuFNJwoWKC?PIqpI$(SNDrB>f`NAkM2jXEv@*^9N(tx#XiBpJujlc<4n)J6eFe<>kM59WC zgpb%Hxl+}A-D^O7`)Fd%qChnGQ33VbU;L4uq>$XTGgRhvi5E_+(_nyF?_qq%|p}7_bs_g&iS95>)jT zu(MuHU_D|uZF`%-6*&)iB#shi1OqzpB3PnIlvr32StM989BF(hL5zUoI@1?N2Tvsz zB}J29C`~P7VZWe9GhCx$38c_?S4PDN(w7xQE-Uad-Mf+sy%nHeQf6-`j!b5PkYCfu zlu6ZJbTn4SV8|3^PeXY+M>W+6IJf*V(pir|u^9T{0Zcm(j1t4I1QBZ+T#7@YJiG!v zgGbH@b!Ea}re49D6vw)K;8K1M|~o9745JW7P3*JY}gWRfq?IUVVqSonenq30BJb<1ajpv?i3I{6XyOsb$5m? zl4ts@czT0+Gkpz(@_voIY!EP}H(1K)4P}5KiepC?rC3PcxtvbVZC>6swUr&zyX=+2 z!&Jht5qv5*?%d7@m_DXBuBTg9kXw?zoRXiLek+ZcH;ZO0-}bT{E_gp#n`e&5 zjzw+!05feS*1kg=){X?mz{nsOfm?6OO&YG^<*=z*U0*iH##0Ooa=b2!spzF$Ai#9~ z17r5ZYF3NYaiKq(C)FWs_0W$zjsV&Qc%W@ev+^sr80pZLT5=bp6IbvM5k@54$Z24E)Gm>mOMzbV;~}%odnkRF8p{u%SL09&x;h{R$G4X;g4#00{D;IwHlE z{YQ{0heRJ`_y=ABGm0?0H0ExorASAuNT_9i)%AylMJl+BMOOYtnmgK!IK>Ms=Yl=r zlJzB}7jD^ag)vT%N}p$r&|>|79U3=6c6^2*3G??!b}OP83j%Eaq!*Y>HX7eauhw%3 zF5I&x9u&gN;Nnl=HN0@F95?zIaJap1f_qMYi!K7R4!ctd9~^l()sOl`1NGl?CYASO z`WS6im!^+Zv>ku?7=I~Mo$8J_*&Xpgcf{%L2*xKZ6wpIFUO|QFBn{e-v(X_Wt1z*6 zBESuRAp$kYzMqVz@fcH-LRPW@By4}KX#2Z==WJ<8QUa(xZiijD!53|5KB{eOT?&Ks zOzni&l$YgW+iCe=t@S#R2dq=}La(sc=z^cL0m*)B$4uR6+nB~f?RenkdUC+RAH>ri zFp}0Qg_*j^s8BKco;+&6R&0v&Ck!@kWFlYxVyjMB&?RJ2yZzxo{$QwScT0+KD_Wwa)wvc zt1lQjr%ySf*)nNEy|-5Lh=x^Vuz*r7uVNDRb_fV5&4o?f4w%M<3v!J` zwZ`$$z7(@gbY#w&%&q|jP4fv|u7F@JFE|M7#u={9RvV#UuEXAH7@)8XwE_}8)9>DU zOUaqWAr@F?VfL^p9=NlU+D^HS`?|ShcVN|;Z z2z)kmgU2@I(1J%r3`{#VrGyublK?pCCz~MBLpWuLI%z;DS=DKc zORS9NfyR+y%uSeE?LaC$}sofUL;lIAT5*+FuooNQT^?xe#2c~KKGILu+WGl zJc0;S~BSRU72t=r$qN1ii(q07)p}q<^)eI;%3R6(ygeU zD3%p^y)-85r7@w}xou2Hn!IYsp7LZ**~_i|a;qW4i;mbYs@ozK<(-~b!T~KtNMNz- z!6U*?kcy23T$5JP`3<~s!nk77Yx{zrn!H&N&gnz)<|ryqHLw)zy+OvTzXE-URtWKj z3gOgfZ}2*gt|tHJXLne-B8Z6DB6lAiV<$3r-~^VAF_1ERa%s8-iu=u6sz3b0eZC@n;B?I%IxbD~2W26ZvZS0$i8 z60iE`D`cqfdq;)e+vuP2(La@8?k73SHMOp_%F=MtkD)%5NqeOwlUB1{7+h>-V)BGq zs}Q3gH-))q0swQz9N5DANpOHT-dyX#x5F__=>V9%NkyzFy-+X{BbG#fA;=VLL@4u_ z^RGZi3y>k3IM9tu=Md+Yrl;Zvr735Qc%R=f0QmEmM@ePHO~hYLq@_GTDZjE08X3sT zXsuDTmqyjT9Q7~wrgL706~>QsX}pg%s*|wRUxl-7btM~2WP~3YrCZiGTF(O&YPC-+ z2AcZGk2l1Z3WZpFg5qY5WIZ-QojOl#nYqi_GIN*kwFrDs4QYZ#$A(JxkQ<=E;dR{> zA{qfHwj`y?0s-7GLLlm)2}j}xY>|;Z2w=GqOhLK9IR8@!-+sQz%tlVm+RR?k(4a=q z5|o!fNTf1DopONN;sVsl=5$NK^kZzsc9JTIfriRey0uWrBfo^eiW z4*wGI-j4(legc-`WRSu%+~S36j*q9ou(8ZvmWjPKR$6i{ROJN6m4N+H+C_MVeYGor zz*+C_639K(W$MYNrq@banuUEOqMPOP$}DKAPZx5511m^cvohG%{|_Z zjx^c@CcBiA-#eY9oz|;zn%P~yW(HRPS0!u81_$p3Lr#*mv5Kv^8R?!D!D9Ge?>-#V z?v!Nu6-=MxPwi8430kCuG}_a!|5IQOpW91{?+|_a(9?&qXp)I zcB>j&vsN{>hGJ))l({Rrxk}wtgJ`2BJoT63X1v{?2}`V|cYy{nLD0~4XKe|bVwqbt zZ_#|+B?TCnX%3!}g;eqH6Q*drXb)w?ET+%8`$-~WFP!OCL>$h=W7^=(jhJF_vvUUHCa=QI!)hRl5)$S{%RLhu7Y(Y7 z_pqXY#ZEs!*N>IQ9ZgavR$*OHqQwk_G&9q~=j?^D!AN2eICbQLxT~h5JxJSd8P3Pz zTPk8&RPsVTN~bq@sX@*Ks%cDy6~}W};d8<}-iddzG)Ho2j#x+E@-%OmWNZ8mzd2-L zGfPj3fBCzTN!x3)MbZccFi5)Uyt0lBSeP_xvYswZ;-&tYXMHVe#nD_Vj+O-{3Bwgk zQ!J%$BLr(flZeC+{A5`oHmv8Uc(Fum*u-%&b?8))>7Rg9iYT(s!mr^qDQj3=WV&f$ z^vrzZh-7l0R4WQ<7Q^RSNlcy+R&<2372uX&asSa89L{dbp(CAAK~c>lbbtDzGt^Tghl=XKC!YtK~}v#@n%# zA{CO*D;&qXfHMfGG&`9G(-fzWr?tz*6;2t}2$)tzR!uazFqSbA^OW8CGq~!`(ufsu2yRA{#{x0Wv`NGN*3>3zyQ&iDpeeC6?LpI+ z9lpo`6Uw6#Y}sW(!!DyM(aH$#U?OBWFDgNMY^OR;sa!+k0Gl-H-~@+(s4Of)3Np}A z?+jLk)99OAZ6lm+qJ9Xc{RL~aA-FLH^gH7ZuJKI$%qVE;XCm09i@(iPKv`Iee~%7v z!~fI>xw+0>d`4?Bqlt*LtmSHqYOw@1DdC{1abqf<-Q*t_9PY)Yjk?iD_t}^gc~Vx@1-SiwXlZE?H37gUhmIseYYCRJ}2 zzJP5OAd}@)I~#kfS6uDFB*gkv5Ub4tHXTz7Gny3KDg$nTj--=gVk{hKBci}ZQ5paX zh7MOuJnFa7v1E>=AWc-MV5c!Tziq&+m|WR@m0sH5)C=z4p*8UVTQK}YK`ynT@6r*> zddC_|S4s2>R6M1A;SU5t`VW|9hD=#gQKz9Qc8lu=x?f|m1Urc{eTL1&bj&_ldIKnB z;@rztk$@5ow*C5vTNC7fWD>Z|D3UWd8V4wtpM*TpC9@FNFm7d z2b)OEI&iP0n7Wsl2rNgw_;DEa{z+JH;q4%Qrdb|hf6X)HqM}fNiLe)S*tK^!x7b%sxFl>ZtRv+01S77#^~Oj zL z)f&|N52NAy2u-NQa=toRNKd$}ztWaE3`5PB0tX>hv@`$J*yJn7-|!bP(aiVKR0zZ| zEN-&wBtHR>cxsx}gsF@c7XqjGLJY^Efc}1@m+lY1%)?p8Ms9CwvPYHrdxS9)&Foy5 zh7Jn-f7|;OD7mUK-F-Tp_mjv=9(rIahM7pbml zs;bjzAY&(OIv}Fg8Rp8vS@&`sM@Vp893PiO;utk+jY{KXyv|+dO zIbf>e6j;MtdX@WN*r5~;?@;-|AFrm&Jl|I@VtC*E3>55H`|k7(*YH~+IC6kr?wKkg z#JGH=0Uy&pZ-E7*_{x*k-tb*O^&AK?t)RNYXZt1ZV~T3m1b9 zFOV})n6+VSj% z2up@v(T`V!oG2y__!EKCk^lQ3DqaM<^+KrGvktJRQ4rBS+E@#*K4RfMer+2ciIJf( za|R@g1BSa~&?S9yAucdi=xW)AtraPRCwRhSE-PXA;FE#!L9JHk}3N7p_F4}5%eiZ`9(Lyj~isDp9r1P6+A06#rEMI2fCj=(>LcD;sl*w>?5 zc{W2BD=~J&z9V2S&wsF=Mz_yZ_zJQ<^#Xh6oe)YQ$I1hrn!~5gkR^W&XCnt`G>VFe zAb^Q9lontv$M;l@FbW@w9G!tzW4ov$&f+KVDi7KT!y67N4p}_#Uyie3JB!{;%|DMn z$YTN?uoD)l=?h0%@hSH6XPl3--q^J`AG`(cW>9It-;M&@9c| zIj7!1K#nC!5L~7CE&O;v^Fto^#yJ-C3-|pBADZ9u0vu6i!Stn#I}(MPjW*`K7qFLw zoeUV>`>|?=0{=8}@LrMNf_>rn`sEAhm{iDpnJ_*cVTqA7lxiHSJZs@T@qpp8MO~0p zes>&&N%9DPC*mxs4;*yHr^lz;uvc{jAO`+Wywk+^S@NND5v7qeGelR6tdS3olQR;8 zr3FD8=|Z!l5nZedt=adS7?!}haP)kVHF~}c8eOot6OrGbYwTXZgjP7WT!b_ z#P!d@(e+@w3A|1uqxe!Yt69$zjo2o~6AojX8(;vo70wJuh%*p_;(A5EoZm%Iw$quk z=TVIs%@NX3*{d+yxr%@-*+@eVU*1N9hx_=XMkYy*aZrJq5+>akt3ZW2hSEI5&3ZJniVGYXn(ztSkh-w&=n8s}UKm^A>&O;>sWSf`gBCgxEL=-5V_{iJ+}>f8I8)O8ug!^QXo2Z|pQn|!4cTtpIt6H4uM zStKGCbkI2Ch}tGNP}}I^q?BKLhM;g|0^bjt1Jw<&<|`<^438cqIvfXuU<}(!T(@H}j8kfQ6PID;_{Z5LCg%&h90P+wIC23dGJq;U4?Gl{ z4dj!Vumj@%air5-jY$emqUO>Q z$-pO_Mz(?XEDlk`>o@EV@KF{85KZYQoHnwleUZ;R2}m8QU# zV&R-Y(u!b`C|`V%@+bxez1xH&UMA`Gi2;Zhgop+#v$?QgK6(&M-YP*jbot3lruv_5 zoew83{JMTz%(mA+C#P0WD+EJdvIod^P8SRdEBV!A5g~FEow|==$q~u_+J2N6MH#z% zM#S(!InL*ixl&Sk4sT#HK?bc76%cj5TgfQ!U)h-F4g{&n$z5C~RwVkkQnx)*Al%v&BKZ0`12@S>cb3 z{VV2OOtFAk*9$&R(dY7GdoY!s{LQ1tWGOW(%As$JsOV`u_F!YOX9W_6*5cN@lL-SxPj3K^WYD@FT_W z=(EM}@G*Fdba^cbn5lFCiKfc+o~pYS6l{h612QRUpWT9i@eH0I4&PPXhK)C#JRG^$ z%LgMkMrJBB1(G-XI+TV86a|c$fjW#|?0#9sF!Y8DFs(ndesksQ2YW!u2>>C1dg1;w zOkj|o7F0@41xOOb40~QMpbNFCgi?W+qdp!e*NcDJiHqh5Dtw&JlPyS&Xd~IT)Ho5O zT`x_OZ=}vvoT5f9hNBUd2Dgd5<7Ki($~UL67}$R&l_hM>{dcn6SeIUeX9G4{wsB$0 zC;u>8!lS28e9QMwW#nKZW%Pb&9Vp{E8twc~++M+~46g5g1g#TkmxFM~;}C`=`nc3A zYZAPcjWjG8jx^#S3mSwu4q={PRKPwVU1xpl$VKPy#TRKcMGGoYJ}L?g4$|m<9FzLF zg&GXQe3l;GKPIBWY%Jt~TB}%?f$XF){KtVwpckax15JZM`Z`c}1OYV&!l@-tC!aQD zRBIKUk{9#gD53P$E??EbV22wGLjxi55<>$ajuwn}dDBme0`?AOqA4H@w&hGX$n<-B zvlj&3=mP-r;Uo7N03d1Hp4~<3ZT|}z4__lA>mbn{#Or7>AjB}D=gW&@K}U2f2dh@o zzzBk(m=HuIG<=Z445ae?Cg}Bfc)JI>0LmGgZsK>Mc7-m3WaSyH2f=seKTelJKlQ8;v7E* zJS<ogwSTR8Fyvu}fP*tmEA z4>SpjGq@`CVCTz8Tv+n+haC2M@s62R-`*Kuyizp{#ks8|_Uw-=l!KQKzrF?C0nyMu zVmw<^0tOv5f{o8cf^&fbfpER*2~m!pV6DlYCdFMmnkf5CwuDd4w;+1oRxHJ);MW@A zP@|i$Xm7K7Flg}!Mv{Ba62o64$b1er1GFy~Cw@l4ve9rsV)qTynr#Lx!@v%Pi6;;% zKah-L4QzpKjSib;)11T-jzZ5pApDn!1|RRh2V{YT9%dmLUJRN4*d$r=NyWxg5L?9X zoCYPQ2Sb%tM?v?$=AbwXF=oVDN8{WZLwk2I08{jmwD9OVpy74cJ!#;uI3&!eyc&;np_LP_M}*0o>_ri z89|N2{VTAyN+VTX-Mbr=V36O9&-ssBjQYHN9UwGSixBgp+dzdDLTNzT@=L80ZaQJ* ziJnE5mh`De1myxm8M#1kN|Tz0zl-qK(Ab0}E^c`39k)$Ln!&)GQ*pyP@4SB&cQh29 zu6g*oNMeu4{es&LCrSGJY{vQt>8Gy$fuc=72Sf${k zK2Yu1S4=2K2}#D;cQhGi<5}ddB>gUuBL}8UV48q>2cl6B`y(hqif0M5#&JKxII~Pl zUjbir-hEPHlVBDm?jf7-!7#c1ril5sQX7_4^NNHXkwVYN{g~Weko$AITqbvE+z2HQM;j!USom!% z0hMzA^B6213S$1p8l}_#?{|L~-8@B76S!kbTK6HhcLmAA7`@Md1-Q?fEh*lntAu6i ztFZ~@gaMNga`z{+(DN(SfaNE3b;85JkR@b1Jq?2mJM>cfkH8A}oM&)P3_)yIu^NBF z3Yo*lh)MiBQWaDxh~q|wM-V!fsNjf4^G3Hz_yu5ui<#k(HB2A=F2nH4G9@KpTekq~ z1&Qj>y_#W6wlh%peo4PiDDoX~tdtQt;`|(O!I>Po;QSo%y_p>CdqV~Lo7mO{>8gMi zOBw_Lffq}H)XqZBZru@{TZ(y}TS|(FS3|hLR2Y+9s%BboXyTVZ&@8M>X8?g5sw#fY zM5?(>vlJ9)6@%prSht^yr6msFJ-a3R8t*Xcc$ZFr{f02kQle{c+yD`5-)+tYGmCRNzt<_r12M=`Gqg~E{# zuSlmnx^yfQY7d1a!OM?^qivDawpNyubcXQfCOcgx7D>huZYbkK=N7QX?k9H;9 zXj>8m;;r%4wn(TW6iT)_PFtiSmTZf(bw;AmL`Q2^S6eLH8EbWuF*gy3#5)sR9Zpwg zmm7-5+LNKySUeVWJ35o0SP13YT3e%$_GEio!VNiH?I;zACqt1)G?WC!wn!q@mFx<2 zxzYCaXe8>ices&oXE+>cYwv6ig*u{6YqX=??FzZA@km=D(&mQ3ZB9564~LydxFgva zjdq0{K*ybUxINk07VB^k2uI_wc&Ihm73m5k+R=*kcrq3PX{fLZ9KIDCPOKivIDM)3 zrd)Q{(6w%6Wj^or#nMCJHZZe!~k9Rt4=&)p443GAB z92{(I4@DE9aLjS=vC~i_2~NdB9c>YGL01f1Pj+-h!^w_BSGb+r>WH?*m)lO@knPox;xn(c4EnPkP_}{brT^72D$|-$IWeb zI@s53F2FiLct= zjWmZt;jqo(HoE0jH(s!t?cPG6Kfi40(o8zr)7-Cgx%+4oF2E&%@pjo)9=Jm z=~N-*=38b7+WbI&e>PXh+xRwZ0vXwilQz{XvGax8K%8H%O_(%6S?G1`c(yN=%E073Z<2hHvBZw|y73*${LUC09Bj!9^tc7-iGC-(13b(xCCgfFa$_wk z^Zgs$0zqflxa6kPd`r!WwzT5AzpYSSO0`+4MdFL2ZhJ?lGZ9IIJ3HMF21O!~Yzwz` zwsk@qVH9_SS~0w1o%n3ArDjXd>=a0R%i2;GN`l|lB|N~V)kV2Nvr+>4+$7qBpnWXuHYJ^O-d(hf=EW&YKQ-r_a)WBvJhDRK;Q*6lYj%WMb zRoP6z-BoDWG?4Fw(bezf3PU!ge^A}y<|J9l`FR6*(sbD!_@aNm3wul;c2~}N*^IX2 zqAi%|*I89mK5MqI^QTtZdCQnv(gB~tnRte%i_ zF3h@&z0*k#xOOs^?W@hLI+a{wsVjq(lyH3&?BQI~qBcpw3QG95$#r)GDyf5Ng{9tC6P0vD z9RwRJbzMyaTKEFg)DypJEp<&zY{BtZhpM=xJ`%*E`-r3T&6DD!rJOUaBfyh7O_^n> zsjJsqbK|uzNS}ZK_P0<^dXWXOmNgvp5}JneWU6N%rx#dGUYq8ywsUsAH#?9{*qLkr z7B+<5g-O0n+vYa()y`DHrFL8E#0%NnkX-^h*z0Dnbo1&Y3#-*v*$AwyWDO$9Zg{Vy zcAFYezkL%HpGLjegS}jZV!4`kk}fDqqL-XB)&vXMdMb|P@>wdvQ!rh#qNQ8zne*Tt!P?QdzDfGex;>43BK9Q5A?aG3%%M>R|nhg z&0{IdG`apP*5+77SJE%t8{pz!q5nU#a-fi1pLG(Rdj=e6!kXJ%WcQ-qVlMcU3(RPy z^qO4-HzPkw)3j&_*y$9o%r9UKi*-EK=5YMTs!Lo7_~jV=D>Yz^bYctoAF@?RUJ6bG_0{XM5J{gu7!AhRC4pfWe?I1?vMc2oDI|8JbO|U_kt8*A;1LSE^j2 zK_v#&by19K870#J>|H}&kwm(unpCrtDHww=sKnL zZM4+7Adjljbn2RybK{m?s3p&vQB8}MJ2uRKh_t}d$EE4I3>+J&f;O1w^oFWh?+n4) zrpJPty9Vw*87SGEZZ1bvtaH|7GHwp;DPOiHQ&mRWip-s7sfA*uEz1m~)Ap5D!BsZ^ z2hVIvP2(VO3QEy{y1{eDBy1S4an}Z!5P4YL1&I3qs`s>Sak8N1UFQuQjADdj+z9z5 za?L<0jX~aG7ttH)M3Q$~YF9Dq3~QEgD|Le_^jZEvYZuqcnbdwKeopdtZacj%f3(W! zSU8i)-;`dLW&9tlc3Cu^N$nR{>Kt!8W(%c5@_b9ZqjadsN*A`?J(%nFRoHssZWWs@ z)sum@QaF;AsXv|SOJT`lV_yQU*wQhJ(Xm0C`k3*!(WY%hf7xBdEH^_|6d4tVd)olk z;P@3lOU;D!Vxn`gu?Op*;9$+IUD5f1gWZ8<+Ag{@=6n++qO_aoVb(%R&CR(z?yhFf z5Ydk7S{hY!M~9`t&^u60&{fb*yRXjFgsG>ye8)F=XIJyGf@opHs^gSfpq%)94$CY!S%nH2PQp-HTwEe%G z#xz#C@g1TSw^w2?vy$)-&i|vga9b6DBm7NB2A<=Ot}>vvY2OLqo5|l^-O?}@&B+dK z0A;EEv}+-UKvi-8yn;v+iZD>U$izok1ZC$mGJvvtRw+wPdOxoC`}x&Gp`!6RQUP-C zHGW*@Sc(LaoSELt?IxH#wt?Af8Md*jP>UkZ*(`!jcrWHM;X@c=1#F`fR%Wp568paC za?HfNPP%Y899bAH+!~R($!ZB)Bs_VqrM4s9P{I5Xs;nz4^&YMbT7358TM!k;+Lj@4 zW5J-n`a%!2m2vz+C1!TTrDSQ#traDRMYW;@dW&>zis(8m)h3PH zf{i7&fEK1Q?wU*j>(C9^guA#jii%B>xy!o2Nu_lyYx*R}#O}UAzutFaXjM7|yI-3| z8{9sues$gk*}z%_b4WJ{TX)<-)R`pc11WcqjgsA5SXsIr8GyQ_5;QI4HXk+tVUX@j z#nCLBf|#>1Ka`1k7NHinyop_EsRdlPtxdy|WfG|VX+#p86q+nj(Gxm%~179F0s`7^_+QXqJTJ`y(yb7)Ts%G z=52jcWaUh#phx$)oL=S+3Xf_Lp4jF&GR?2^_#QUjILVG#ptZ=e(ZTy&1HwL z!%w~%@z=c6x?PW=Rr#GJdNyjiKA+93%;lURlSpA;qKQKo-l@Y>sac;L6e}`QdjfdtnE&BQ-H$Nmq?>7 zPDvS7TJFjWRvK8#=BrnnIVGPqtIbHYWH>_w3~9>9HcM@-)#NQwrh2^^zMe0g;*;m5 zNeXTus$oAt)2%y8N*E_!pp2oBG-IMo?ZoddQz$ug#WBQX^ss3?156fKg4ya~smnNX z5||M6Xf#$r+H3s~^-bgV=KhStb>pcH7NV85OfBZBJ#euE| zP^JJrakRs+ktv{u^h7Bee}?ltUX1iW?Yj8QYmEkMirl)ZkJ*$C_8^jAOlTz{s|kr~ zsR*bojk*`pPEp^`vypC2VfJSi_c`%iY8uf}(kbpBRgZ=&h-q%bM#pqf4$PenxWn3U zlC2j8qJ&p@VNxkOCz7BWqVw=0;aRMOv>GFe^77;1%~;6waiTPbq=yfTdiFDIlMGF}^Hwj!#Wc6aMJz>73zbZ>&$ z)ajlI+vpC`U_>GZv7EH?g4sfAn>W%2V%j;cA>j${YsLlz7MnQJ1!izc*@DEInAWY+ z$Xpy_3-bELVpQ{55;W@ua+txq?jtC-Sl0CQb8IkrQ!&cUWv*5=%+TFD2uEU3SZSHD zU4ImhqpT?@5E!Q=t)jW&HIiMhiW=Fz(!N6iyLHF2Z7|wB?}5(?x*9b5Szu!p$L35K z8a-a(8ePn!ppRi1ax`+$;4g}}uY@CffnABBXHu`9Y0lebX*`UTmr^d4U@I$@@s|hJ z@rZa1;ooT`&$Xhg1U7SO$`}50z{U2uw>qq|lE2kbF2PbfZCS{2Zx0hhKc)>Fnb2)Z zyFE^PNbkgXCLWGXlY!pecMgjlnuB$!qSHZq;qf#~M$__=4aIV|g>gEF2Wb=baJ)gN z4_Xuwa9xpTD88PICKkQSMWkNp)gfq^r7ka77<#~)vxC>+1TB#EvRRu4((c?|lh6#e zk5bDm)l?1irfe=z4m+<1i}fF5>n3b+okBx`i{eviPtH<(>%1*lOxl6%*cNZqh+4C- zqOnA6!5(Bbz0+lR2i8ne0n7btvS}UX1@J+yffv;~LxIK8MYTE&!=Xhf?pjV(!tT}^ z%T9XG8RF(6c9k(VrkqS+6&yy`HuI2B%8dnQZ{m?r`Y`FGs4wcWrLojfdMDEO0g4NB zAKgsfIjSiScGJ2{JUx)mn^T+ot>Zc}#^zT+vWC{kDI=jWs)A%=B3`FVV@U@nt1a&WQF}_#ER-LXd0ga3-mAr*(;VF1`NMXD4{@djQ+?lL&@VR83o8 zTEeQp?mb;64m=QWf@1&4j^(mDpn&ws!Q1V^@>B0hJ2-+%y`pU{eIj7es#cU8VF`A% zULe(>^?jClZwaTgjCnmg#6>yh9~=prAJ_Zau}97+}u^OY2HArBLQBR+c*vhpXgLd+AlPmM`_-Xg@u);T^LZKHdCmcX92R{Mzd;T(D*B)!WiP{Mo+PFAskD(iblo zJ@=MxKlA>h?|NW!`kaH;KX~ZZzr6Iw!QHR?<9D~^(l`(ESuu|VWJiPn@7mnGy8DXx%L^y3Ik56`-)p_@>-SywAaN|c zWobSamlr*j;x&k+-WxqjGj5?Rs^9GPr>sp zJR9-+uXy4SxL8`8sDU&Fb-E0Ik{q3W-PDpqzxJMjuq>E*p$WL2m0 zE|hO_=5W67FYrXhn~f)yygEIQuM?D-n3z!ieDb&I@ISn&zBcx+>XDWbduYBmtydi)y`Z;X$h zoOpSnuyK6+W7kehgytRp@qz|C=Z<|#HB7vL=XQC{`L0^gaPp1NoNro3|exa6r^cC>!Cu(8#U)4q6+k0;PsqoF<@t@ydbIkRBJ-&|PlC}fj~9~(Q0sG556<@wA%Ha3Q_vq0kG68|2)iWrQ48#WorkH0)$=dV!KX9MxSSE}*p zK>S-+I|kz+Wj!`l%m=O0#{&7Fb-lzjJ(jH+#sYCrdcoMS^S2dKhzX7 z_$PsQb6Nae@Nc}B-#Ct_iGMAb%m~Ai$sNRpOQP(KiO0Qh;C0u;u=*5}%>~U=b}{FO zQd5Q@W`D>(*2%iJx^q-7CmHXe+^@jjF#e3(uL$HLSuTL86DNP8p8C-%>dW7GN!|bC zOX|*tUsT&4I;ocKeo3wWv;U*IZht}K{lfIm)ulULRPRmwlgRv{#19RcNuE2~IEa8Dk{)roT{la9Ajs2q}WKc%(pBFxSwwRA*;c6+*f9k2H z4jno)HufFKuE=L5ud#1d&)2z!4jqOD;Z=tJA(Q_#on6fTUy|VGQ^WA`;RE?k9y)l) zmRu+fkN%hZ{DZ9GD_(YG{=q{B4jg=PyPppxlRw8j_=ATI9yoB|3kz!G-*M+_*QJ$T7Jpn1zeem;~Ot~&^Q;0qF#TQhoD;Dh-OOP0{!kR!{5#~n1X6_hj|cN@=1ehx>gUQv;6`lny0VmBSq z^p*CHmfNYw_VJhWzn0r&%s(vfzI=#$QR|bpxSrJXmE}vHPm^o|Un1Xv^ZLp28=gD} z?1wb{&EEL%#uwqiTV{LsEAw|8dXhuX%QyN(j}L%1G80#={0k-5SZ5-34p5tez})V6QD}IbxbteVKEV^&jhsz4XezsUIBsg*y1{6Y4L%^iwtP&@tuQ`(w3g z-wSHp-s5V1_EmLu<`pG&=dA&|GyV@6$^Y;7vwPntAF}o0Cla>b>T~K9uA2X%K~OY} ztCp*oXw?12nkDLFtdJJetln3YMLk%GP!sU3(nJ&Up&6)wL8ju57>MAr1iB^$>P_p7 zAe;_!lBl>Ui;ZJRuNo`UtAhJWi9q=m06#4d*TEX#RS^6$;OCXY2f;B@J{@RCdC?Pq zHwz<^=Y#vx=or@O-en4zXC=G=4?uIeu7RKu-Ye)&@h0Fkqf8KL!5gT+QzNJg&&j!r zb`J>=l!3zq;qxzcsej!YsJ0k=x z_1j+xjo1(Tx*4cfe+BrV(CNT?j0<4-Y6*Cq`tJzVIi_u|y@j z?MRn~ueQuyH_atWO(JX{52z~Pe42Zjpxm#WkcV0|6>a#{7N(NhFS*W<4Wyn)8E zM0Sa*(eo?$@W(6a4}b@J83e}F=xHJZrG9AL?M&Af`5yp3@V6$ze>QrP2@>hRGI+2r zNdL!!)jvw-W%&ho=|QBE{u=O)KEP{xIWXd7@W6H~Q0#VHzXpG(Ty}|$@MIu@tiLL} z27ll$SibzKgvTb3e@Xow_yZNP%VLd~3`^^;fS0yE@W5w$tja3NQ7JsxR}OEg|MMdJ zv{HC>05Z{jz#l7z_o{!O2&0zSKCVU@B$L6L>a}ZI;H)Q41Kw00klkqqYr(Vo%IG)n zMG$rU!39DGZ$dvh070~$>??&gIB zR3vy&IlLBN6rf|A7VGw6;oCKQPn@52MUto{;sG@wfTQ+)CX zUJ5VG_v^0?k6k!@3HYS&CF?)a0k@WbANo6!4*N~0FSZ|ZcqRRfdJ(59FQZ?RU!;G$ z3jAUplC3Xoe|i1mFICiU-62rL+hp`tf%kU_4TeeK$1Cc8pMf*a(}TC3GH~8=?E91O zf4rjp8D-#yP80t9W$4bjPmSTf zxlRYZ*#HHervv|q0GtV)2K-b56MX*U)aB>OAe;%GI=uCgfeAd1PY%CN&LZjCR;&lg zFW4)^5?d?Azn37c49q52P?lUzGYyw1Rui66iCiTlm_$!)`B=bF`Y%c@Q`V=!)U90( zC1n9WuOxwyB7(9|dF|ue|ES!5sfC~de4P6)MwJK2D63aTE5XOP|5I)M$?t^#q9A?~ z=KfRQ;G9Y3GXTk8mC8{_44roc!2;m`hU(Dc<6`JE1YpX8HEWiF-Uj5xa;Q^{uVC|W z7U5LOmz6X7pX!`9%5qLA`l>Cp^Y)HjvyFbr&({L`zdoM-fPqtHm??N9$fW5weGt5? zi8q2#98Y+?H2zWVe2YoF`ehT+&v%!{pDWFu|8~5DA#d}egdOT_e!R_(AP3%-hafj# z?LGH)Jjj7Jogd}%S9!dA{wtp!%jeJX`IRrn6fexbzvFe?{d4fPW$@x#E(;duQ-^$W z4)2}YI>z_G8q|svI>xtTrl{dzFV+N89BA$bzO$zz;9X}=k0A5`)va#9eT~|T&^mR4 z+KBi%+}9$^>+6jt(R9AgH&uOSDnq#8x?1iUH>xkWRwHHstD|zjlTvBCUAj(X@P=tt z%3UTDZ9%Ss)I9PXRY18cV)}Z#u`rD|x{;nkPDb@q!L&)rgz(;}{ujZ!tRW!io$`of z;jPuI>cc-5&;`_jqsD4I(t4B)jCtH0{G}zO$E(A}yOx?7(wYObEmY_5YytclwFRL; zlrE@Vgh*RlLK+WKvT8tDLz-Df25;Bez{HS)G}oue2CRb``3^3*M64;~=TXJ)$YuYLUK?*MvnAm`>9&f}loXAN zQpYy7qNX;rH~+7y5{+#n|?aW3vVz*QUJ0{-=* zrC~Jh%a+pVo851q)Cg6;r>`GwjN4g8Frq)@gNB=8^ zl)3`Cz>G6u&Zr^4kw2~sV}qNK?dl?wHQHb`O5{Nax!8|-ieulvR2z4-`$^$__Spga z9{~OwYAE83qGgnbkUS&kPihJUshSBmYNvw0=#f-xg`uYfy_?2AUXS3NcniA31y4Ed z$fbU?ovrDS{!mrYC=YS92z(5q?hyLBSwdlvY*UYoUZ*tO3hW%SS^~@aIOC1rX4D%j zUF>NabS{&&-QdwhElO%lA26nS%G4cfW2c&fHfmZDkR;MlDPK_1(Xl7QA}LwYOH+axcJa0Fj32;nOR{Axiv zO0=SMC%Xst8K8l3oChB2u{3(e#*9=d6{Lgmp#KE)&A)A$15V=IeNEb%kN<6qZ)pzv EKL - - - NLog - - - -

- 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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). - - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - The assembly that is trying to load. - - - - - Class for providing Nlog configuration xml code from app.config - to - - - - - Overriding base implementation to just store - of the relevant app.config section. - - The XmlReader that reads from the configuration file. - true to serialize only the collection key properties; otherwise, false. - - - - Override base implementation to return a object - for - instead of the instance. - - - A instance, that has been deserialized from app.config. - - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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). - - - - - Process exit event. - - - - - 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. - - - - 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 the wrapper around System.Configuration.ConfigurationManager. - - - - - Gets the wrapper around ConfigurationManager.AppSettings. - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - Internal configuration manager used to read .NET configuration files. - Just a wrapper around the BCL ConfigurationManager, but used to enable - unit testing. - - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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. - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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. - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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 - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - Thread identity information (username). - - - - - 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. - - - - - - - - - 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. - - - - - 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) - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - - - - - - - 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. - - - - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - A renderer that puts into log a System.Diagnostics trace correlation id. - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - The directory where NLog.dll is located. - - - - - 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. - - - - - - - - - - - - - - - The executable directory from the FileName, - using the current process - - - - - Gets or sets the name of the file to be Path.Combine()'d with the process directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the process directory. - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using AggregateException.Flatten() - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - 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. - - - - - - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - 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) - - - - - - - - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - Fluent interface parameter. - Override the default Layout for output - Override the default Encoding for output (Ex. UTF8) - Write to stderr instead of standard output (stdout) - Skip overhead from writing to console, when not available (Ex. running as Windows Service) - Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) - - - - Write to - - - Override the default Layout for output - Force use independent of - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 send the log messages to the standard error instead of the standard output. - - - - - - 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. - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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 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 activate internal buffering to allow batch writing, instead of using - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - 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. - - - - - - - - - - - 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Sends log messages by email using SMTP protocol. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - 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 - - - - 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 - - - - - - - - - - - - - - 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 in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - Force 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - Flush any pending log messages for all wrapped targets. - - The asynchronous continuation. - - - - Provides fallback-on-error. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - diff --git a/packages/NLog.5.1.0/lib/net45/NLog.dll b/packages/NLog.5.1.0/lib/net45/NLog.dll deleted file mode 100644 index 10984a4f3ab9b6e2bea7a5247da07a7af42d973a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 846848 zcmcG%37j28wfNuD-M8;DOEOFDO(x3>Au|+rnIsblA+mG`PGdJ*ipT7gSU3KczsZ*y; zojO%rRej9quXa4gaeV&$^Pi6MNuKg|u>S7;X9vlBBlq?>AIpDzk56_T{q;RgzUbn{ z=oR(wIrVcd8$JKr%P$YF96j%X(fYQ_M=!p7^swVj8oexh_5~BYy@gc~>EjP~oTIxu zr|akU|0yo*31{VKch?%nd2f&7Y_iawJV1Dq@Dn^8XQ75&%eMdm`H{badmRV($xC~w z*Eug0RQbRCjG_YK?xqmGkHAmoT2m55JV zdBF>=B>sZ;MD>!o!gum-)N#(4s5k28161Cm?gtZjzi`z4I~eFh{enwF5H$s!mDX?O z;B9K>vZ4D$uKWpau9I;_xBAZSo||*>3WXl^mb8<3?ucN!d#rHH7RM=+J3Tkrbk}Qk z(RiRuMNgZpos29rIewy~8b?w6@^nn)hQ2PRt0`%&Z^N_F7bMa(tm%$3xW;#uQ4vb- zkBGURQWz^V1t(Cd<@xc1QX22c>zj!xpwDsFE1Du|TRt_eN)r{P7R_vgCsC1)##g!} zGc4$B0ij)*9zAEvj|S9aeU7`!OJ=3yr{Gp-xo2T*77Ap7h3+V?M1=*7D-F}45rv?k zp*9WlNob&gnpdJiBZ|*vlS*lF{9G#Wm8gdXo?NQ5q2`aD%j5hSc=G%!qWsY_R^F+R zn2rYEe>4VY0KgtGKm&0}?e;<3%31WBU2&wQ$ZUb>eHfZ@pGS;3k|^5`WT>r zxoqtl5zr@sHg|WS7S7T&o>Qhj(B1l{H-J+pb_WApW-Fb!Xg&vy>xHKinJHweL13Om z@G&xUVOw1+U1`KYTO4PlJ7hj76xX}v9-f}*TPXAgp)Y1w`kVQzkQ;EqGaxb^lqVDr zo=L1cX%oYm8m;Bti^evG5pN#%;aE*?X(gN7T8b z0T+cGqAlhULXGE2RM?dsY-s9=2L2}cAP|(xLXeaMhRl~F2~~NJXRIpdimL^PuAnC7 ze@LvlL3yY=Y+P5gN$j_)V^k6cGh;kSA2u0zNCDr73ixKCfX?)VNu+9-#8BG+mbfCc z|01*m1(R%3a&Z7FTWN8(Ti#Zb%%egl;&IYEPHf2bl40{xNusDiROH_^K4g9@&r{7$ zc#PG8@##yEv>RvgZJl=s&aeq2wqnTqLZaI5Fb$0CPJg4T=mdqpZT>Msi~W-H?(9vq zz+m1h2Ic_x{m;yO^XZDEu-otbIo_GqCa$fY_ z+KMGk^>Ett(>g|Ff{HE>YI79S&Gx5ds@7kS5Pk=@y9&dY|+#VnstDtkjG z6ou|m{Gk`}EJ)q~TZc;mQ`b72%UBRf@Wx>{=n29G;oi#X0nc1XXwdKXmGoeyKT}

wY8 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

m_DZMq#bT*~8mbrvY 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�bL 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 z%0A+*y**oBTp}jCbCQ^l?D)7q= z2I$~Ulx)q+FVZgG7XbnMrxt+JSoxOV6W9bwuN#!5qzBjPnTf{#(sjSciIz-7HdeKz?Id(hBp zrT9aO=3NXyYDw-C78KBNIyYtdH@o8ykj}A(!1RUPfJKm>{wmL2AD$l`_n)z9`SN@= z^6L%Lo?ZCnDJ(IvY$jcQeC6o7))ja(%np=1_Ac+vcl+J*J-$O5iH7oDA-O>ta5t0G z`&F{GRaBfa1*z)<6SHOx6Wc(?I<|AK9-#>R!(hKl{mPDvuP_AG5-m=gpw%6&&^%gf#xOt4e0x@6E?LFYgILz{ z8pVn6N0A(D^NCkHVhD6m71~AL!!U9F$BY3-vn|o>HyrVPK5{Y90jvC^gSm+;k{!s+ z8iMTAtRt~dzKhc}p>!K8vi9!|OC3Y=r-R8*qKj_jj^7SnJK(CdN7dv(Id=$iuLP^q z#LhK5awX8vtcE0jYR&{ml>$p3hF!}6MnLaj|NCaU|MaXcpd2PZ*J$;9Le&6zmbt}5 z@6SE@q6te8H4@({8BWYY(Rc1r7v5jD0|{0oXTUKrS?33bmy#%X*Ao3IFLR!`Ii_$I zQMk9LHe36@qrB+BwI~m$4S-KQg%lmxDT17?#!F7zZFw)M81+p^fhHOE;NTO2L`fKR z=~6#3)vOvquJSzrj|{3Ai#5xEUJ$5Ab=^s1d7!ROpu*|cngK2Aqx7~{6@+T>oWWwr zwmJfVGbb50Sd~&)!wtfIKZl};)nR=QJ3jzUPO(flU(awAgE%SO2ArgdT{wITm?&38 za&-3T$G8;*A3Be)w5NIx%3Y$ROTGZTa5>?}vgMbDTQ;*skkT!`$-@|Eh}V7)EvEaewn0M*ztTO3NLwYaW=oZw*!2GlN>!^w}xt(ZpG<)bFqoy0kM zno!|@#`kDAzUN6CqowfLr;_6y@$w`;0{_#)$x?Dbf z*~BEa;ZH1<_)cTv5RZ)q&w!IE0{C&jbG?j&79Zce{+IvtKmW(a^%0&AFW>k^=EKn_Gh0Ap|n$h9Tui$EWmgluc56cEKRB6KQ))ls1V zQ)v-m7@~xck+^rvVo8u--rjIi;$++4Y|?D3Nz^WAevx4Rm&c9zpa{s{Y>DCYO*6H4 zjFIV3bRkcbbFAxdzgzFAoLbzpe=^G%Y*43`!pFpiiFM2c5ONg@~TPkNw?6N(M1{dPY=3Zi8Z;tAW`XC zmB*>ZadxtaKfW)^s2=vlL@juVDQrOyntUE|fyJ5S7zv!qY z+jEbLQHDjzU(PsNi;tEgz%l}4J$A-ee%h|O_fL<_h4)OF!q=aDSRX7SP<~99@_EGs zvVF<$RQfD|gSUEE-{@UY4XObSqawW|2xn>e%>eyxaPt-fC@jzAP*#{ky#L4n5<3&o8B%bgN2ZM(>HdfDGbRv4*dvcUV+wO`^AroM5!)&tq62<`J++aEz0j zG=Q|AXtHG&KR9a@D4od`2DPR%m#n z3q(25wOCZu@=Z&<=1iY0~JWP8vg4)~Y#_h0Oo%2dQ`Ruec3O-5$) z0ay2j`FYJF0@}|*z8jqZYtu)=f-icfguTI)g}uB}8-6ztfN~kSOJ=gb>{>Hql+_{U zn4wiS#vz?c6dhn=_GA3I<;wMvOotTW!DSrUC0b!iVcD$9Yni2G#T?3+H_AxZykpXw zm2Cx7rw>o?xtDUnjdq>(7y%#VfLs~IB~GFGD6Jz;*tm#k@H_Sv-l`gc8C->;+&&gp zZVX*5+u^tjh6+PYMo5X4C9uR}jVUp06eSD>ONkPryRq5Q9#s!@303nrts8vnm{#RYMmzV z@^Tt|A1y7H1zph`Wy-^7<@4Ohw6^(n(9laAGEPceQYzHN-ghdw=y$^GYnQp+Cl?a) zsiW^6HnGxP(sdNkv+*6LSjy7|@x4o6Zk+c^lT}7w8F5so3><};@q&-CFlb@k06^{Xep+vlv%Q++z@uJ`tca=9xgP1_SFR9NRy zFxXy)Uk`*2GLXfwK?bVRI+uvdg&i_JL<#T0X1PQ)QNBDMu_-9e-Yz88E@(cIUahRo zd{T+2#q(~e0XD_&k83~$zdx7Eywdi7Rn{+_C5KH3cMTU(xBBdwYrK|w7hj>&NT*Rz zVHZV<)ny|g!YDslU&03;m`Y5!+W@WrRKo$_>jvrb`Zkzk9j11-A9+&#i}t7jqzlRhT{~QQHJ|aaQVr@<{*}GT9tn z9FBJ785rL8EUqjV)c1HW;Xwq+=Hnb2L?5NWg5;EYyzd$2lI+dq^9E=UlI6k@^F1wm zVkp!It3>qh@TL)wStVgp32~hcA|V9v0^>bsb90`r)}mlrLktgVB#}G9B5G9bepsF5 zfFpq4eF}|mPT~&?P0rhIC7aBeT6Fty#Tcw`_n)~~R`;ZZtIEd@Drj3nr9+Zd!t-z& zm4J1WmqV_nxin(!U$j^bFbKj$`8U+6%YL46?1 zU!x!^A2_BmT8wFg9?V~!lXAi7-j`DI1cR^`zKoOvahqJLF!oP!7JEy# zBe~i=)C`u7DakX(5h6*{mBHDaBtf5tF|oVl`O{29G@X1VKzk(PI%Bdp$)K8EROAw* zi&lwFItnv0-Z~PfT1|lA#ib_`m&?;3-ih4>bs%!C38-?KLd)A}s#+2*Rj&*?TbG}J zDhP|iCJSaF*cFfH(${iqYQJ6v0iBR3_W zrt{#Nylaa{%5?fjZ@(*snEbcP|3nJ5sOpQ4t6*LVBxCG4k2st}o|1s0SLKF{Jt^Z= zs!M(3fN4`1Cw34mm_5+}qInO9W@6srp7On^;}j>X?{X^$8}LDq&|` zQ8UfW7;wFB<%9_W!bBE}4$S3^hQbieLzS6O0|q_Pj9I{&ysd;jurHblq5i{2Ofp@- z6;y-9NKFzxafX5mEGf%)Xj?*JYO5z0RWWA1=SR|OX_-P(2-OoV_wk{X4YS9iK#5B@ zY=n83nG2;y3BSaK=?tKX4Ce(h2Em{aCwRHr+VUEGeL>~F=7X+kI7#3ZGlFtp1$pIKd1uEjqu21*o^5G91;&NK;TtfO%uMs*Ku(FvEASfbx5k(G=Ea%#67h zw~Xs3U4oV?N!g&JL;*E}ti;HZGvdPHt0%-ff8p_tnVMC)&t7ZJtbA16EdnrEnZ$OCG8IxDkq$R(9q5>;#qD|SKl(q{$-Lyu?069cj$E~y#sF8T8APQl!}nBvJHRrtfR#7r5@(@Q+RkT4jQko;wQA2}|+ zFeghXdQAek_^p4pihO3i`H0KF-`q#&pyMyv9n5yz(gsN=|JpgN8JA=m0zj?foEy>o z!?NgHR;PED2Opn_$FIkRvrdlGFF-i!0U#y0fmLOtRc)i$E5>DvTS+y8Iz?^TSt*IuoZJYuC)MR<*Y0AIn3qG1e=gzE)bi^ z!=@yE9DE;ncJ+S$bv*!GYVWNC>bT@M{Uu6xRiBqGkoW7y;HVA-qAiQz5gcl4TP<21 zllM^hf%$^OCeK7AcAd}*uZ$@}QmSpI+UF_?(BNgl%Bk8i#tp1Q`lDC1o# z2XJj#S^oi?^qKOihHMrR$N9t^qEXt+xwZAfeSWpgP1dC|%qwse(qh4=aK6w9bPOKH z-|U~@BpTFQotfmKHr8;FacU1XaK5?J1AMLB0Fm$=I=;Sok4lG|ZLe!b&X2K}#6@>D zND7p0DXPtf^UsQ@r7cz$7j1Q~w=z%Vanbw7hYZKp?Et7GH!S))_&Y}6&U$)|q}|DR z3%!)e!CQt%^4{rk`#5Y|Lxv(5|4I z#SF3li?w5kn@DU<0X)DN>s(mkCeXpU0Cf9Y!dKpxIG!7Z6@Fy`ZsxHxUw1+d$;u;5Loxj-ISsNnysVkh-NNk$9Y+09~@J~6R+a)5=6b)$|W zWK6Oi=nsXkje_!$3>S^Q=O|SmqtpJI;wAMm9<8TT(iMl^v&fs=9tSCYVnMy$m-O_T zl;m=3+{RiMOmBs{d&&?gQh}(GS>KZSAfv<*aiXR=SHRr=a^&r3UnigU^vt)|j~=CpXXYV)!Bt;& z+kZ=;!R-C*g`!;lH&#JfnfKI3KK{US|HP zXT2Ai-5vo8teyBl7Pkm{Iw6r21VW^Y6%aG&=u|90oNjBlPdh=N}%W zf2H7lr1qrUPJoTnAC_hPpBqio@g`I^WQKC;+OeYwvp1O`=(1QhQDTT;x5{1e0@k30 zy=xcR+`^?EUO@Q3Lbb=Yr5#ji$zsIVYzpD`77SLXAa1fE{&EQaR4JWDkwhWs`2`kp z71n{}R60e7T#u$$$krPSmL&7YJE^j2dy@ufmchZ>5i zv4#b4aGN@ZR!}&bs?pb$Kh-GbL8-#jxQ2jNCC)DHzKYR+n8ySURSBtS4d;2i#<@S2 znz&x9jtbvNtX5;Sj}~NN$z4zpdxzKTc=jqEYSFuG6AA^T_nammoWDo*#q2+ngVz(p zw2%1z+Tl4TacI?Na8VugA!ZS+D_eoI1AW4lu#ew$IPT7h*wZtI=P+6( zIe+#Yh=wv>;=!J%Q4f%OZi9Li984ZJBeO7`=v7WzAu0LGEK|alG4%z54ViUoNgqFS zIIaOg-^Ak9py#+CEh`_EB~0#6x6*Bz)S?G)6WfX#t+yZjJyE%B9p2OiDXIAWOr%o(60`#3p_MVp5AP^(#t890Nsstz;6xDnqNraq#iiN zmT2J-O8g4%CcX;FySf73g(hr?h7zie;RWO)_tB=Ne3C0xdx7cfavpRrh!+i6hE{iXp2O>nsJPV`(ta#2Sj#bSd zx~GeESMw;am_Xm1&x5c#;^jS$^PWM9$`ob8De9_7E9213ifqLICyNXA0SGRk;kT;! z%VSut{k}k=(P|RrA<02AGKJ15nMgt%XxW$j(|WZ9}a+u z8UVy|e1$8ALql||N!wELz|9M_R^Ac`K=hRx zAX1b!fZgewP|DCoTEf1U&#r#VU$N2u`fnkNju~qWPA^djO-G9vE9$gOfpl?UTk^!m zI@Uv$vOZzqd)6n8-M7%DZbKL4i^qz&x9vw5z&9+WMg9Q4px^pN%?R^F2gVhHGFXl*gRhTY z!!k4DUVG$sfg zb@rM1KJy~>*HJ&0^wFhVX7Sw;pxHJ6q>_F|pYtvulrny5nOklx!Ws$Lh@_RixZ0Fa zx<5nuCca(D_%|*Ft)f*DZlmp5q-d#?T`#0&O;Z`E5%lh@qfr4^5j!UK{xd7F=+!=| zoUv^UsaK=h^d@OXJOQq)nBP%Zn4l*(QMQXh45_ggsx@k4sE1ToI&X-3Dv*3QF!2}17TTqN)U=mq(QL3ssHq14?WkNt8p(JKV`{EX#2&$Y8NMDyuZs1nk%ReRNSeYr z9Ewls9d2xQxQ^#Y77{){c_T9f-VaDFV!r3ZDk+A*xDc--I0r7_i{xBNTqA-n(l0nN z`Wpgdh?mp{-J2XtP}!uFyrOZZ@guL~9Mx*l zq0{jmV@r@hNB3B!*GU{-`y|e}4nD>x*ONGMJ&EgD@!aP}n$n*=n3JPD3EA&Kthi!K zC$P8QQKssN7#(nq)h}D=e^yCuz)Q^gBH9TzhYfB@D|qq|3;pEl6~ueIBd)gHXDtYw z=XS;Gwq7ZC)O2~||N5&}8TbJ&22*$Xc1=ml*L&q!@`KbLPD! zDT?+O83Ris!Hh97CdS4)F=o7LV{JfQ#K;&(ur^?09c+Y+vGKye%7B86ff$If7Iy!? zI`_P)d*AD3lTw0RTkLml-KtZkPMzN&FLd{5hdwm zUUIhklLxaK*7&VhFEO5tVY1y?U~JbAOu?GmReh}LMDhI0>C?rfzVo4Tc;W^Qd)A3} z?Y3BQv76`h$tR4L-AN?;()PCS7PnsK(-~7%fmc4Ub8+uUG1V?{Rzt2FZNO2EoUWK{ zyP}M!T^3o{3Z7*psd7=p3N+6obY@T6ZA`h_rFJ|4LLd3jU-{05j##uY!vPBNs^c4x zu?OCRRi@@#`H4WWg3DC*m*q%PY}19p-jIe*jv`=yoeaGICT#HD({?&WB? zILP7Q3nA`()-QGRj+=6j+FW!YrulR>)r-;nc|vb{P^hIPerB}em><2Bcb1DMjvPL9 zt4iqf7#N6mY|r`^xXi4hz;(|Lp+wp%-vU?m*r{uLma*fgV16_(Bx3c=0TEe55qa55Lfg zUr|rVA+F@k>eUvzj@(Mt$E(KAopDpVIwNn@A4dpM{zYw_%F?+$W=M(^CSZ?kg~Gb&TQK@cCh^XObWc&~FSqoJg#h$uB0 zcVBj%D6{!U{-LQ0ccV2U-Tz@?N?36y0bmZ`HDeDu3^06HDZUrJLfz35C!nUI18F@X~t&HfD zxD*Q6N6N^Dso~@~LO@>L@_9@=+WXwf1=fAU9&u5RZ_)b>I^&ah&di*?>E5Giw|Fa^ zntAhJ-pfItL~b5~o&%|Xim%dj=7)#TVD8rPpfV*&B57;n?~(&z`e1pukib*=1cM4#6N{cC zUuF=)X~)VTzC>~%-~jDBeFjZ){G>k88nW-Z%1C%+~=@nVY&L>_A<&+h~ z^utW~17G(3B7U~|qw|HHE0Jg(pQ}X_cGdyOBfVPWADOkKDUz!DIlnA>U{FxpQpyD| zg>ACs>jq}k%q~Ntsk8xn3dToYuU9|HwuJL8~;XM6yw0jF#5I4ad84Kn%W-}ha>lRLdSM|qSvMGa*2{?FTSLgXDg+VOvM%n zZ!E(1Dwc&)h^v@YuTC>-_S$Rb*7DZo&7?{(73<4ZMZ;%~SsJ7`1;9%!2jbAD(=xah zF-%r3i@@BA8EcQ?XO0$tY4)&Ona<%^k>AQC)RDT{6?gTOADI(YE{hq>XG<_m(o!EH zVzIq9l^xdp8>1clY5Dkfj~|k0KT{m}AMxrgeRXOXODEA`RB|!1>`n5H`?rlUs7c8JH>n&q*qy|!XfWk#%SsVZQlb8UjIC$Ope`6 zOU)exzG*Q(pZa@Sp(}7#kH(bi5{`t5*yp8 zwddg3XAd6J=Dv8ajz0WS#3UT+Ar39?#3%|ob)FYp|axs0_ zd302+Oy`D}qGZtVZTzSYoR03NFIqyl`ruFn3>r?|ysY_?Rnrw?oR3MNO)O)!%Qz|kLoEc=7(Y!0P&#ut-xG+GPc)I zWa|A$*d5MC9K-O5h&N?tLulCDUfun!{+$S6-5Hgij@X}7?-#aZ& z2`?}^t9mbm=T!5Qu8zi%lfqHU0iy0Hjdomj;}PcsYfA{*cWQjhg4a5&`@^bvNTsI) z>A2dS7kpqHk7a6g+{U$ArH52b{}7AYVRJTO{+ymW%;)qBY`izxIz1A- zp;19W;Wr;1;}Od7h!;H`5C1~_9TxY6ZI7zei-K}C&hV*DfAkA|&a3_jU1_7RuHmS# zPDg?3_q=BLVf{TGagO}3ulHzos|IbK6P%Y+|HXI(mEeridiG*q7U6_()jJZoJnZQW z?Wib2pNs&!pv%#$2faZcT;Ull&NIdbQvXg(sKBVa&uW`3w0mW?gkhO)d_+}API>|E;0bg(CwNHxA^klQ;qYW!^gI}!oz{~>st2zZ zGrVuMM33{?nb!dhTNjg_lsCZ^lNJ4Wc=m6 zJjvslwBwN(nItFeNlg$;O6TQ%Ts{^ZCV#Mrt=M zWo+%z^jcr@s}A)wJtOu)L=UU~mqd}fMM&^5Au={g5RK8jSA&l@3DSesyEBh7?Xwz_ zsbg5FRf8V1^ZKE!suvJ}J`Oc0cV$XI8Risqs{bu!Hvz;ZR4@KF9IY1r)qIDS- zQt!jYw&EjWU#A)zxWnP?=9_t^fG$ zXK-B1XJWtDA;Q>rDyKvgkXt0OYn^?!h#=^F^Etu{-bK|SI;-BI&`*tr8R3W}JroIP zwic2?O#Bpjz?z%S#2v!Nl!4nh`EOxhLbYqHFZ4pt2)|1J6Dyh^m^L*5$mMi*G04Ya zH_t_`qI(1gb7w8QmN_=Ng$%Ci;fiyZnY8ICwRYDK{hGUiI63HhIO${@Y#Jh_7_maQ zqoc8ZuX;NsXSwX`F}~{bz`eOn9alf#fJmPeX)mBJpPtnH83h4wE-)CYYvbfZBt7Ze zUB$rls!dj*jUVWZ?ZR3ad(gXGuTgrxFinr~t zO;9ed$T3YVQtjsBoM14GI1!Y;Pu|HZQC5IQJi(wY;>8?vjBhIV^Kqme*HmLI^Xtv0Hey2uC;;`; z@5TeVdp?%nLb%yZ(}h5We$`w_8&m)$UlHZ%RL4z!SU#&d2$|x_<*1Nnh2Jr`3DauD zY=mV`==oXQh2=@S!*XUCTPnEq{i=CXHBl6>L|E&s5%nbIVWq<|3WZI*$C5Ljjb>K} z$0s!-%*n|Z-4pxeRs#K*Q|&q3AC8O)jp#2qTFxn$KE`lJ^du@XI@J0_zX2S{u)b{H zO*HljhayHFgHMQ??8z}bIh*42JB*v5ZCA^6%nR|gWhzo!6;>x?2WUUEO_pon46RHi(NxO<`p|!?KkJCTI=^==)B9^ zSunv%J}e0rA{8dYt`XnGb!Co#SyyM)D*9$;3DIh;|8R4NS#6UtqM7un4?z$YBj?#{22uwQqjf_8uM{i84g`kFwIgZsnJ2aPJUh45NU7wEq8;wK5 zJn76NspOy>ldNPocSFLu{H{cgS~!=-2<3!iiWYM&uGT@xS91o?8)?Sak#|5sp6$3{ z;f`Dm%J9M=+ygg}@DkdXKA>Y6PPg3U&VjXbs+y8VlPaA(c0y2(Nq2kv;l`Eu4h^GL zW{}44o_$&2Y$ZYo&!fc*JMc7zv2{hP%x9 z$6_YO%4up#9AOjjA-c-TU(h&@#DB;tQhidrgth#-RZn%oJqz_=`ppe(*xaiwfe_JX z%56#~?MyX$j~3p4UgJW)T1aIvSeBdHw^$hPPl^rUcccr*$yHlCMlY!q*(uWj=tp=D z4=9{`cNpbVN@3GXgii9FgtaYO#Tonfd)-@jVX+X2_$|Ft&3_{$HgnZLrJG&~-C9@Q z%PwJZ&~k&5ciEjzNRFlu*}gCv_8xF(wckth%Y2%wfTeLyXkdBvqsaJtY_S-Wp_>%A z4l-{mEWaZ>6}D+n?PRFM>j%UA+4YAy*W0r4Z6TFEn6=#&KA6?to?YLUU2n^-ALv{^ zn6-T{q_z)={}XO`{Rn4`;s2oOaP`3q%Ke7fFy;5@I*zMzmqu`ZHnRI|WSv@xF87xp zC;aZu@Vj4>bX@Nb5!Vi+NSV%EY~Q(yBkbIj+vN}$Wo;SbiFj>A2U)nzf*K29)nI%} zw3IJOLY2%|RQ)MwNy~GFiN(P8w8!FVPfJi^>Sa;5?9%v(q|Ku0X9=Iycao5p>xao@ zK$hae2olX(tZeGNY;*{Aj>?%CkNYc9K7)GmtKbwCTCc$T9*YOx_MFb0nO5`^U53r^pv0;#b^cmUcg$K7k!nPhjup6>ztc3>` zj-)Z{F34kKw?zZ|JNHzMi{$1#;8*#C<#>!MUDJ(;)OkBIj&3x&)6}@^u(#zGap}#d z;m}~>?XM|aoKJFCBt6J}!aFu#a;CVGxB^B}bGJMg+foQ(b!UbL3`{~kz^dUqBiNRu zW&Z^!mpoW_He$pSGm&`)sSF8D8Xo6_>5W`n?c&c5uVE|Fdo%J<4uMM;tRHI&@Rbt_eKuXL+IDS z+0$idGS(z|cID)oQEYl`<-5#y#_lZqmerQz>8UbwWR-CwmhK)gn#jfmRblcJgBW(k zMPbch!2-+OkvT0(5L#bIOg1APC)gxJ*%CEy_YOD8-9T7=dW*=LR?bbSun_^{cvM~5 zWFb*ymC~&zKs@RExC^R(C~h$*rfcg3VaWd{l&jsRzobLQl_`Ei`un8*|B%|FQT|2z ze{J9u)@}x#3Qz0ruZ3UJ6zbo=C%Mw!PsYE`#=l$RUxkt?KNbIK1wz-_Rn_>U*aa#* zBu2R(h-)WBassV#9y&a^Pvd=AnB}|O_Ueu)gdsefanIRSWZ3hCD7e;uC6C3)GR7BU zv@RLwkEu%(5bB7DVzAZKG}|Os&3;-Q@k1H_OA)SwK|qIz=r2f)%M-gldy1chZ~8&~ zyH`m3e$Fe^O)=<3HsT=ImTs^v&0RvEN!nmQEhpc-HinLL&5i&AhXLm4In$|mQcyv) zFBl@FNHnXPwnUC`!Me?l1hNj>u~PhAqI4)Gv+$TRdn3 z|EI*5xy>w_=RDzFgfpnudPPhq$=i`2_ipDqI8t<)COEYI#~U>-?_DwRL{lQ}HbtgW z%V;4{_{^|xb%5@c_!87^5rYgwj=n!D=V9Q-R}|f7*tz6QiDB`9@?D1LmgHfjy?gUH zdwJ(6-BG4_Lds|lw=s|7(Qu*rl#0m_n~6RplyU`7&Hi{+b$)5A3c#(agfFM5J|L9L z_&H+ddh(o2t;-&27Jj$UGsUKlP`j3vG5uy!#NI}XGYL2t0gZ0ci9|vOyzMFl^5}NjO)6RomN~3&k*e!S{ z-^4vTJ5CH^4qJB?%9+i7XXK3Bp#J7+4NRa#5EaOq*`$J8cnfz232xkxia6Y7ZdBTj zi&jornmMYp*fuE|9ugF@$h$P7%yI5Yb+x&#+-6cL0_%80qVF+4rI*d+7B&}VEh;s) zmTUTm=cUa&_2-`@b2obT(t|z|z3M|HJjxqU26voY7|4usV`aSB3U*4+YN%R%ch*3$^sdOP;N#E8@84c- z$A-T}v|71K5YDNtZ2%9G%o{e6Y=X_J>->B<9~T{Z;^mWY_Qfnb{Xa~IxL7AK&DXKZ z-hxf$e6Aqj*Skhd3eEf=CV?Qw_TB4sFAWuDWkq&Yq;R}*QPpUh6p38C{%iP+$ z1**1cD2@cy&n&>U!;m~K}dM$N*gwK8A69H7HpZWSDG)rIK| z`e=bJJa(cW-r*P*B!88ix*e(Cb~D3q#Q)R6jV3j3r~zA%91nLDD#lZ8Rn*-X^5^dQ z5at{8Q5tM5enk=E#rV5jzi?k#Uvokk(^L0Ds>51aZ7RoiezI5un|Lwd6JI&WpzPDU zTJ9(jJncAVP2bk-9RelAi)on~)r)`fF*80477i6*v4y`rK6uK5J`0dh5biwMN~3Y1 z^(`gvL{5ip7E2JluSLSm)^bVXm>F;wZf0_(22-aT%$O*~O9=DIg$)M}*DVbLHY?_S zwS&!pA`SQpdD7c7y!*~%h{W=Y z`3q%6NF%ONh7?62t=offG3N*MgkUN9B8S92`ZvtqE;CDH(+w)ORik%O4 z#$+Dv?xMH6URdVYxiIWkWa+}1{Emzr`MR*KS1CEX(5OBMt*@t{?~Do)*PXOb3SX*I z>e)_Y)6t#K5&;aRZ>WnMVKSx!U4KAjhcb2hVYOm+6p<>9BtfAEJ1In(khL=h!dwmX zsHtppNbN$xy4TJl92hK^tsITVK1h}@GW3x_23zc^z3o6EraDq*tISyB1k1fBGjKOM zB)37R-Kup%@jxbXM#xK8rVrnTe8OUg?`EaedNZe3a{k_Xw5v44^C0+uD_qr><=~wU zb3R>9CYSxje3gclEh_%g&d8(~2;G;w>pTw+`>@7pu|G_G6N8w?H-|v5DSF7arX>c> z*fR6Yi2@d8<)ja5=M!6al8Lr9&Tc4G9xYF{kJnySvP=zpYJNHqCVcyRDI%EExZKZ6 z-hFDD;d)=fwO35+y+e7HqVCiB#ulwsuuVB+dDC9D3=GW0=pM5>8%G5R?VsBdS;?_k zjXgl7`Y6KQ^`rH(0yl_o=)*eNuY6$$D_%U$b+mH znYR9ieAszNdvgQ#&OQC)NxSiIk4WIYyomuqV2jd_Cn@vtaJo}kz{K;fwXP?mr^Pue zc3RGu8HdvFaB|^o9(?u}LtR^WuuWS?FZ!p~+~)CAt@Xbow9ICEdf?V*nG&{m5$+A- z2VA&fG56Pondk|^F9~rNmQ4R9UE^ywBbVu&5`xwPl-8c(d{C1@<98wmsEjd764{-O zcPE2dwk+Yc-UA{JNpOBZ>U`7$iIvidv2U9z@8BTUWAD;d-?mG5v9iQ8@OGX#J7fEFfF=8XA>oR2IRg2b2x7Vk)VCFWq1BnSP~Wq-NSDL<gb^ zqJ4*O;YD>IPihHZmwtOgu)gL`z~?Rt6k)+8fA@uPW3-t=OcNtRbBS?Ev9r4fNzEpV zs*2X==Zd*%V)Fp6*Ag6*X4KYW>aV+(r2Na$9X_0Nlfz+FEMW;votE7&!-3Rx@z@!6 z%!+cB1hv>Iy#df0qvTjFh|y%isBA!;HyM%fC9~MWX~|OcjGP4kc%JPNPKji0;Sx9? zr>TuEMP$;IS#HSUI}){N*})Bv>5wEJz(`I-Eu(ht$SzqEM!A^OhdB4H93#d^X!WQ@ z`%-7T3Wa^>xk%pKS#QGtle6C(1JN?!jo61GsSzL6-x6|=A@^~8QV@%@c4*-!+S-Uq zdl>%)1j{_zCnCAAPWWcFjRh#S3j(Fhg8Nx{;JH;It|T2v(2n26IAgN!uEb_JWE35% zw9$jwVG8_6+|%a}ECm1-=JI$h#S(LDJv09>D94{4g%FnQ)ON_dnvyUu9JD`afcwxt ztgBe6_m)xE+FsTlLfAv1Jl`*oENyxr&}hi}=ZxKE0gA%%h^DpxY__L4tc&rDb)!6j z!If%0$XX2ZL}GVKEPXL-jgS$u8I`Al6wc|%IXz<&S;%&CKCW8%F2_w8uXzZ#C}|8^ z;;gvY;7Ljai=`iULU4>b%p1X6+1iK4jEtQ+q*^R{pakflG^^lC2Fm#j3Na2>9=?c> zyG`b`JXAPUtj#k6C&V>wptSCO}Hk(9B(}pM-*ufxK z4u!Yk+#NSR1x8}$vrib|In!;c4xFcv)}|=+>4oug!ATo-JrFfWHgNWj*4E4vtPIoe zo?{gMhL=7T)r_|E?JN^IPslu~vF=rV5c`iUN0E@yD*IXxwLL!&d|;gTLpK1!%+fh% zx~!XP@5>ToDImg2g@&}J#S+EV$6_DPM@_y<*EoM^RdjEh-sB*LfqyA!*QV{+!Vg?% zcAaK9CA;U^4huA2iCOiTVMqu%YeBv<3Nc3sm?EeqX%JtwMkLkssP4(s8b5$XuC{Uy zk^W(QdrbgUXfvd!2^&;haI-{mqpf5}McXrT85>3@5QW zZX-dPC6DokaNA9CvlbI35SFXxwbjtPD^oVL<9WaH;g;K5SFmKY5We(+a_9AyoQm#EBUC(uq^3mcXAKs z*2s>-0~t*AabYR%J!R+vTV|7O$ks@ExzA2qiyO>6!_@+UCAlpAE!@-6hSjoxHg_B+ z>#$mzt*e;&8!T?7YzVp+{Rs;iE{lNvQZir|kF*)teE}$#EHDvPRcq4=vx3z=6)nG= zl!XWwf1vekn<3m1PvdG`Ngdm(-0pz-{;0C>_x8G}IZ7;>ZLtaKA_VSFe{2pHU z2_>dTJXy4eibK7nz&zDQtJngamzC|&L$c|x3=vv&BX16`oViVtn5-ugcud1X1>2b% zIAZt=2H(97V@+5Ge}{BJG5qbYOj_b1sN*^55c4fagFGAGqD}DgNywS&#&|i@3Kn$^ zR+}xoP>{pzPTf_h*JL8> zhnv@4nZMVn<6wM%vGmRL=7T2aH`(_K^Y{I3+=YaXCmuVa-8X-aH}53WCgz9M?KISi zE$nPw!;?4pWJMDY`QDAmYBd260+L_^BWCnbGr*#fDrlG9Q+D3NES#W@6hX&ayLoUZq1V{LwRzk?Ny(A1xzHG(Q+q=4^S2I}g zz|U-bEcKP*qHY>i@y|IpW%0t=KRQr3$D4)O8-n(<+)1tX$3d~bLV?tXrU!~U<64%qpI4e2E%vhrAeB*TQB;{PH z7*GR#lt#|BXc1JgCj}~(@imK@)w>jpID>qSb>f=? ze6S{X3@InZmPkB9+tZ~C3!)%N-k-mjYQk?r?)AKzFw`o47sFwty4zy#W<5?uw~&79 zRUZOA7H`5y$E7;?mNF&WgSZ|bmX{J!rrPN-5h=xDAubP8D{aNl?%7xL;*!?ATi=|o zV;0eDn<>j|h_5x_4JEUhRo@k{#f!fWs>Ktre9Gp;&F99rVV z76j4U*g;}nHa*B27yzFz5QovPlQ#ObEx7-K`nOI0?$^KV`u8FIdqDqwL;oI>_mO*3 zX@iCn*;SsM29oFBr0pA!F(+ww;DB&MB5l#enbW*?SHIO(c=Em5Z4y;%ZMfF2sp)?u zgoAi9W$38$SKgM_r z>}MX2eY=@KdzlvV_3|=3vCrw1oSd#cFP@~b_Ce7a9LG~eX?YLl&b&Rs!_oMKr@Nd5 zpyE8FWxlx~^t1Wo1N!%2{adCZ^`8=KX+9l=!#PGz=_=m$tE~Qt$}~sumxFO$;dq=n z>VUfs#JgXM#)U(4_;^UHzhPRq<~ff%jfTb!>+%E?rk!YtEj;10%`6|q>FwR*uuv6F zEuS~{W~(VZ&tT-|!Ad3d?-15xr@|C6kL2MNSX%I)IE(lU-EVs@^Uoo4`*GSuHo!7` z?NB!?mp+t~rDpNmv2cvQ_!H}5J(@e>IQQ&nEj?`!v?T4&w$`uy??Ey=hDm!md&0R3 zI2e^QR#U^QhohH{gxbe@r2_L2<@1@6gCuj4i{*=skpt?s;8{D6V+!3ZI{@$6-qv0| zxw#lQ#^n{Z+C9nZ2ZLjR>U@>Fiu`Ll;(c262_qI^$chTei`Fl*58_v5m>;Cx;vo13liSN8DM)1I5;N`nti*_q> z+J7X3t{90zyxH&;JP6d-RkI1O;t9a*y#X!#WT;flp&FzwZjLhBm-nih#*OplpiB~YI zIwaItjaSa2_4}U?0ZvFAK{6x7i(WdTXo9J ziK5Qkn!emsmkZVU5AP*nWT5f`-srR!vW}8PD7Kmja%Ic-awHjkUfgsd`zh-<@DVm+ z$&$#*7N2WP0clvqq8mCb#6_TouspTm+FOO?OsTaBjjmSb z!4Ta~DBzNc%Wqy)E{Sd*UALP>fccPHGN8Wu%jC{6%QwI{#gJUIjyU-c{y-JhgvN$_ za2Qy4);P+tXtK;o7Yk)>Rdb9C*IK`h7<_)dwk+4%7VIfu1x?8`r}Ho;Hg$<-aaZ&%#sFf^KxN zBg&0;EJ8p=Q(Zg`{24IAD}@uGwd?z`@=>I-veNG}H|{IV(9?o@ll}Gomb63kqLw40 zcg6pQ0VFo`KdOVY{5AQl%5?6NF6n(3=9ZW()?t<_pA`M}X|;|Q@Sn?G%g+zftUd8? zl!+s8RS#<9mi2K_$Sfc7%u`~uBVBPFC1nqa??mhu$IQxinO5#*kCGO<6kpHkUl`7P z1N+z)Q2820@)^P*f8{fsF9#Nm4?Kwn*xk3uXYVH#{j+rha<6cqFH2NpPZxEd|Orrp$&}B!uakcXe ze96CiwsK$Eynp5|=?V9rQ!llZe4=Yc|DV*HO-Uwa!;?B0L07B!L>Hg@n$`b{vPN~5 z!!Yeqs3n&BplJArX5@tCkhOsLig$#?ELjv1#*k^_y>99T(ITHw z@J1(+BRUfCrWgBi3K52t=1H&_^^5Nt_UzR26oJCWW=TBhm7*)NSU5{5`)*kgWhLT= z&Rhb(&b4P)X?olDu!m)xD}5+BZ40rJy&VEF$K1zA`N?hypc~Qr=uPJ`+cl9xuv+Cc z3ueIl1!+=cuB!TBagfz^8LQ>2B?o-TZ}Kh$??WXiVam-hxjok&aA z=@))>xn<=K?@&IVwj9G7WQX81ca`1lxV`Ou$zG#Ze3bUD*s6SrGO%(9E|%MNr>fm@ ze3fHL)c%gHGcR+wd8Xvn_>!~LqPEr1xbzJ$%cPTi1D;+J8ivc9XT!>}o}-1W9kM`U zkyTh`$zEhIVPZ=vVR^EWVMBUa9*vJB)Oo8^bX9Jt{8?L@H+^7o`Ju?4Xx=akZXKBr z?^psoEF%*D^~0t_4HiCZZ5#e#X40{Qp;7e|!+u^@=C!GZWP7&?n&Cd768t#-Fz6Ot zvx5Tr47`()93Kq_$C;kksv{c4B^88L%*I0nG-fPD2zQj9dT;UB_D9qQ^K(zhBBe{}0v zNw3j#i{zQvpA;=mh&Ei$U;A9lqJ-5Px%7biEsu+oiLXDT`OvStF=anrLDwW-?%mtm zGQ9LHET2uY#_0T7aZpFf`k^h{R>0lIqCGO(4n^Scvx;DHolj=h-ltCI?ja4wbdtco zr4h^Rww)n=(=R34c$x#ODqnXYQ()#t=>QcsyKHt6q9noDbcFdt4BUOkF$&xFYOt6| zL$+7gCHEu~1Pj&EGmVOa9A7VX}4`;L$?M=@DE zefadfK?Rq>J5OfP({>i{!5z#EX%7^yt=G?o*yrCH#JW2*w!mBT$vh(M4&69segRr( zZQ3V&ar4#P_X5yc@6mvJGg4CG9#;9jYuoV4d|2u?leyOC-kUkNIh4q{!~2{Q;u|N> zu%W?g;Rqr2g0+G0(Q=-{wv@P6v_-xMnH6GEye9T!@t154K7@Rb<*f3e(3Eppldh+u zlAw<;@C?>v+9Ss;ieRe#F-pvKL!%z;9VxSR_!1|ij{UiO)9mDwsn|D!Pd0)tlpS(<#(me@YnxsTV z8zc@j3{@tewKRdTCj?_!WI5e?yw-Eh0IA3F7;mz_t-07Fy7?#`>tJ8F!KHu?{{YXz zf)@vku;yIUjr9L!Z)`%)aOZ;W?!6xNl?vtagx z9Q!nP$PPTjhrXFf`}z;O)*Tw*cp-h|+Ni`tmrQ(5zWW|;qPNP&s*oAfE4reLq4R?; zG5DbYu1uYl*+{lSqx8Cel4f>$ne3wa=@H+~XBt1*IpUT#chom2cX4R z%;eeU-!KXfObZjEj70*tI3!#cOG-cH)QhxRc0jssx039kVnWgEECizMaPrVlmek}L z2Z=dFK7Fw;!rNXp#AU6Co=!MIT#%l@#j#m& z`BD8fX+Bc)7#i-RG9u^^TA!WLkH5|cS{4f?7v4xcE3cJl-KBppA&Q87G44^=uOr~= zkUll$(b<%u6!M`ZR;snW>fKl}nU_NHh3hmX`_2ON_AMK(L%QY5xui-X;};xAl2jK2 ziFx2JnuEr!y*5}_n%1$-+F5e|eGsFO-M=bl}!_P&+dqiy0 zM%zgZnL+z{x~XBrJZw&*Bw7M`uXQvLWPdN0A+@=go-Gcmib_~x0-2wT6u<7yHH1VQY6S&q1&kxLUuqv1~9+ z9LO8ypCAmw=!2t?Po%!&#+UzSIU#c7D1RFe=7Ph?j0qsVz1hw$Ls}WyxU&Mfs`CZ zp~#kNao3iD40kc>vI&(x6aJ;Pbxi1YOW2_6UzbNhzP7fJg^`bH+XCO;{4G6uUwD7< z?ALYV@CU+&ghF{ZR31%K@SO8^!&D_Pgw{ zVmTx{SzcVo)eQ5Pn_3jDc@mbAMbOf+MD-Q)@I=|0Fn_~ey2alxHIJui-Y}j8Go2qQ zEDFN7ROwM3NvPW^@8Lq3;wYW`MZ{f#XsUr1EKF)p26kn#gIdApu^dvh{&17S z0}|%awusdJ)xtghlfRaJe&PNfmfYOxNj3|N`r`}tI;D9tony|2If_L17?%^GAAFy- zB1)Uww=l%LYD?>qnB6J zZEo0$XOoUHnb38nmhAj7y zqET{l=u7u666@9;*covsZ{fW$BmkaDgMBJr? zzBR`8$l|xgCYT9`SRR1+zmUUHk>>n_)>qP;^cuIvjV#A7q4-xEroq(m`qE3$ij=8? zN`SVoF2jOVoRwH?Wh21vs2U)&;?gDN(RbW>|t$M6R@*ryae6Fi) zdMhE=8pW4z$^DVqyf4}IhQ<<*jTcp!GTXKoW=kw6b(@8d9Sxpx*kIy`38O5YQ2q*M z$|Q8Z6cX0^_$Nzk@V&t-|4K^lF&NXBDLSUPBui`7uZo4ectYMio3jUZMkzG@F=@@m zmhx=X)zq+cPuANfC9B|kOp4h@WK^3F^$6>0+39oB;;NJ)pl@chjBlCW!g_cJjw8Ru znoyZup~$y0vhEQ%-_l3gOpE!Xe&(U-<%Sm{^%PWQ=ThI8@(cH16bN@z$1p3&vs_`2 zX(6}g3yEPeNq(>1^CL`B-)SWBT%KPTg6GUr>!c@a(d2=wyJLk4Mr$ecaJ&WyQI{F0j!g=E6;4B)yk1ZDNBIf9+n}@Y%JoVBMzH)le zL5bIci|wzQCm2og@#dxaj&kmX#5~rOmtc_t^pdSw*p`%&x`!*ULdvZ@bL;q-*SSp& z^8zw)V6pIxw-!0(MN67NT@aI1g{MeBU}3N?F1dYy=4cV<+&yy^{hW}*`_Ymm znm>hS?|Km}nlcvo`aNlETM(m{d>z017A%PePe_Ej(C2Am*yFmh{3QXP>Gm+ioRIPI z(O?B==SwrWhwVEdNq^XCBBMSWYMW++H)U0gd3TmCRDO0M#gNIXfFsEa8y;9nd)cJ6 z5>1(&gc zU6`h|o#scAF2m<$)q!0TKEp;C@Sz00aWBClleic+jV!>0%pkU#T9#ll>{49CGmCu* z+)dY|74mS`9Dk1>a}bzVzEF2jxtWuVb$8PJAD=LqzICW(4a@=y(#Bqp zy6E>bobSe=}kBpjqy8?r+JYoy+)|x zEs}67M#Q#g#l6~%IT7B?e^qpozc7Qky}5qE9fmyYbxaU(B~jFfd1(FN%>gUNe{gsL zmZOP}LiQ3p&c9ngd*Vj3P^SLBzuAG@i2CpGa5kDzOChy6Ud&BeTMDf&q+u+C02=$T zNZBetSSSHp2u68M76Z)=v2kY5J zVfGKzTAyD$n&r-jHgZt6igXnYuZ3ESzzZKB8Ct)$cqAt)jd}eHfJbD=lTun(3|Sz; z^(H;cgrbdD4eY#^z7c(2tzoO2=0G6YEU3F{k*EJ*(Ox~UJWFp7mG*g?GE4SqUBa*7 z?*{w(W#Pa=xZrxSPK!AxFK<-)E!Pa2NuZkiqMHe|U4!OZxY-=}x%m-b$?l-QI3SJ! zn-6SGlybW=stfaK*ocuQM?gG!M1;4Pm*J;)G8~y7XPa2qC~t56Alg4c$uX|tcu4+V zxC_SeeM`s`Q49tNZ>=y#3$W7uto5!=>zSqJ$mR+MJ%aa;#S=Qt;|a zhqi@=J3k971<6{RxC0w%A(|~ZIT2Y^Ppu{d8La_swFb(LfRMBh39E3IElc}`=G0dP zZOmIS^^CyJ&_f!-w%&btnxmY+W6aw4J`6Tzq7GtL;_*0=FvS{hxA&I&T*my#iSf9uQkv}#RnzW1u} zTd?+QkAcpd{qs>h|(_m!xRkG{J;IQb)uCOlyKZA|SWz3G{2 zyq+U{Ag{?5d($DL3rSo0LbvV2K+CX!MXuEYxq@ci7THc4S98pyH`cOY()+>rM!S$Y zWh@vo3qj38Ks#AXht7-d1aFuw)pH6Yy;|G8yU=g!B{NPa!|rawrnoX(*QN<>IXR^k zAHKO3W-G8XYP%7xy%AQm2fIfCwQkf-@V9rvU&M$$dh@MHqng|)&c_!9Lw4|){3ffM zN78u7X_kx6Zmq3CFsThXF{S!mwk=3l3K0Iydsf0uZ$*Fw_SLzdT<7Mn3m=`(rVf_Q zlU1F6G^A8{0g5de){ZUQNfOwO8-{rq6VD>v?Q{53!kTR#_7>1B_BQd`QI4=Y$=CKp z0qp;=JZ;cDo~JrHK&KL6*y757C` za>3+=6hF>>&KqppFs=AvF-P%zpw|C(D+s}&upw;bNYNeCVC0KKF4evB4QI z^E{c?aierDZp(BMK@?vfoQ`8*O#}lQ$@5?i;ig*7ObU)gbnpYcR8_sXw8WkEG7SvD zdK?DQavQlxl#yF!Z=za;f^S1|dsEUo zkGBB7@~$@H%h#FHD_6GwdnZn14y_6UJ;?5cPbgWwSHGx!_%@^J4vv5YD-597iX6{of3=^=SC{ZA7>yJ>RK5e8#)Yxn3yL5iPbxn)e{W|B`a7iq(x>zrHXTr6b4m~%RSAbUPU|mic1qXp z)h|bgPN~IltXdJwwJT2+sSX2&A-KWuq^-yoW_7Xx(n+cwCh~Hku ze$Qii@_3|a`H)v;0SJ5boNLYGx=Hn8hr2!!uXYK_6T%>@@h8x}L)VR7>Lu_8upSjO zJBm|KH_y+Rrcd22)YcQQ`EHFKTq{moSOcWzx%BkZ0OCZXm=K;2(+^kLs}eG=C*r*J zs)4hQUW2Q8J;&p*-tiJ+&DQU+CB@!yz-_ccBwW#<3N15-*rq5lH#U2tP$%RTGN~vr zOey&)+iY)3t0)^>Ac?fj%{4{}jjH&B)zuPB;p#~-3g-cHE+?$7vX$jie#5YBg+cA> zw5xSCCfpWW;|rZ_T49VyHrJzD?bNnUiBiytjYV!2sEx_!r35iAVHo$^&#DdgEz|>4 zwe4K)vWp(8yGw%{58I3#wvj$(B27gaF8&lx93R@w2lk8z=M{I)cx@8QJo8KcxJSJH zkpuy!b^#H%D;Wy+_0MTWz|I{+z8i#ckUDETE-^+4bxMX2)jd%?OLb`zJWotO{P5Q_3_AY zyVcs%KPN@I@d=w3n(1U5HN)pjf>M6KpQda*vxr$w87JdHb7V|aVD#b47b6#0z7OZq zVlrY~TxZO%j`KJ^f1f7%sqehkGlFd|b=h~!K2^94tQuH9xVM~lU>vNTc0h;jOjqJ0 zB#F(CE=fLmq^GtrAK^K@jO|YsdWDy`6h+u8KoPy~Aj8fkJK|AJXHD)!(CpIEC~B(& zJ?piulnMBF1cpa%`$Hi!%G2V8@*pU;$bE60?GVGJ$s5nTR=qc!0&3H;V-Ez&at^9OCjGtOg2qJeT>Lw~Pp|&-z zQ*Pg@ei+W{mlXiQX9^%;AI8c!mT{`-ts#!5;GOvcQUJS@QOV)gHsNm{ja0*nChF-< zd5C=!)%Id&wF^u`dJA3BG@xL8k$ z3o)v0bo1j+Qe>6XLf)grCN-VNN2-Z*VxpSEFViH4Nc>Lx#d~5d3A35plvl=Utt+YE zy#}5{AM%?vPks1dVx%By`s#2JZP>!sPFZin-rF19Hg!z%xPsEMW}C>!gfbXc(8||L zOjEl~CP9+ONj)OstiI!>m&y33Rw>BLfzap)!Zx|?Ioj;`n!NTzl(?f>^jHXHr`D#0VR!0ne_YIf37s$h(Q|>}X^){T&Fc9G z@(5@S+(=_AnA7wRXN1_Xty@$=zRNSt<=(aE(Ak+^g`VTe2`xx_+AaXxY4w)}7nZTn zV)&kfF_dwP%cCp9Lue2wX5Dd2yHq@9f^D`_bJ8+Qxeb&s*Eiwnux*Jj*XYy^=Pb(V z4coi{%l;*5vshx;Y0s{*E|62q6@|@-xoKp7i$$Z4?u;|%Vx5xkP{rax1f5ZugTySO z&ka(joEt}b!or1GYp%6H0|(#YQaj2ue&TbPyOH6Jrv(F^x6K#Cp!6DRDWj6V6-8g? zRgxSsYRcxW#d74kgo?at1!rd3B3pX{0Id(5U1Jr{biN|IRvROKMvarA3jSQ4aSipC z1?#wWe8ZDQP4f!eCbE!bGjH#AQpa<|U{YO550i_5WXc&Tbbo*&jHO^~xA4tBXLwde zclnND<38J^Wv*;kZBkPzdum^#mw!Tt6%lA*pBA7UZyuz5RlLiU`ZS*de&Qos1i)b2 zar^h(81_v-)2@4Fb|FkB#W^PLWw;f*Iva;(3xgUCAY+MZ7z<$zUKwGl(J!43WOQV% z2}R&k^OcSkzlAhScS9{3XV*VBgtTWm(${$z&f=ULe>)s(kq!1aTdKyKfv#hwH3?aGD-3KAyp>PC)4cTflxO_=x zam1AB*f1MKJV5~ihIK*zz&q?i^mFss+ti?($eY|?A))8jThmK}Zirl&8$0zj6y-hl zWmCri0x6+Q;yL@qkg_b6O9|UjPR5i%ubwJ7nhmLqQ=(F1CD=nf+pQMX<=KTPQOUAo z3O-{Z(rfydlQ~LmdacLT)ylmPjP+{Cd|I9Z^@|F3J~88rV4_a7V5by%j&~WN8_rZ8 za}i4C%%^$Gar1GB+xCT$ z@%bB)*aM4R8I~RQqaf*Dy<7YoAK;hm&BFbIwfbLuw@7AwxKTmVwJuGiu~=s!vq|=T zE$OaSGmnc>cr!i`Ocv~DwuN$sW^7_i=)HHVaCwFwF8iY}vauG^&S$91PPuQEghFDp zGLPDHzm@$l&NgN-{m!5n1;Hw^(Z?tylE5Dvg2uXQA1JLc8frOaEzf*GMSW};-q|2Jy#@*qt;o128gl4KA43U^?v zELQ*wi&*2~!aH~C`B`O|DSb}yJatdTxE_OJJ;F;T;u)OyP1pqbO>> z&Z4cX-tV~i-jX8~rf#+0XW}vyJ0z4Zzvo6c?A5%WGqu9Jbum3=OJ(l zzC?g|vjmO7=b-4YFNsAW3?w<$)sw4uciw#I!Ih3kcA#uR%ZnH+jF8T=RA|++_m7B} z8<8AQIc9h8{o3RUqg<@D@L$6-e_y9uY6|d7svF_3cLCqp5+I!x4_F_`m9hh}s+)`b z4WV6Pl(W!p8|`dI?^#it7YT3JW=GxzHa%3#*P>c0T0p!|{%Muhn0+ep5%fX8h>9K- zZhjtn9&sBFnlr)t!D~SWMiNu_CTkN)Un}<*D^J4v%=dmPB!}j1C8mmb!C^=XN$`Fr z#?`Tn35)J_;bZypvYUC+IBE|{H5!AZ5bjH`bDfZ)PIL(& zhiL~%d&6B8p1g?jzS9=Ws}itPRA%*z|MOimT$+=*A_v1rF$VTkN@W!WJ}ex=hWQ|Q zQZ~%^G30g#d7gYmDciSq2?v0*CHBczd%a|9?AOe*&72N0U*=Ck18T7m6WsZVFW)g| zlOap%=;0#5u6#Av#<)e}+?MtEL1hE(RmoQU-Janv(S<{8*fHR{wPEvoRPb8&bg+YJ z<~kZ?@k_!DbVWYKuRd?J#dS5BZ;``JP{!4%&1 zaY3>;$P~OKlZAb?h}D9@Q({i-#g%=Fe-VLnh1@^8}rY&*n?0z zw3r@q1!*n^u0i*fL14n}D78-&O6OCZ4-`{6|EO-H&hG|*Ymjchz?Q>S8G_{5?()E`hdrwG-AaN_`p zFN>3PH%GdZDS-b?Z(T^F!?nsP!MxCIqr1UpuLh8$~Q)hAw)gOiBbL&FT%Vg-Y}} za5m>X5~H?k%b_+QT7Cc?Wh*GJk(+BmwA%YrxzO-BTSQ6l4I5L*fjFWUHN#+osqEA` zoz|#aI&JJk{5YvbS#U|ldqS97?lHNq=m$$_n+uFP<_bQ|Lah^%RUt6Kyp7cA&7ihN zh`y-665{qc81-GCe2-08FR0x}U%DBjC&iIxwCf8#Holu!@RZv{()bRaIdib{#6RCo zi`+3h74y>QF}W==%P$H8r1qTLF`TjIBG2Ng`>`axV1^M>VH)D|&O2-?^pb7?OyB2rRw_w0(QDfw-fORFt4u+uU}F{(N}i}B2?l1Cj4pj?`pIfSj_3+C#IA4V z&b9&|>uxe!4X0#XFI66%*sa!!O9EP|9qzQPFep@0gHXJjn5aFuTlkrog*T1cocAnF z&MDrDALjXR>ENIJAAhv$={KhT`~UgRhQeR`Ph+89`$LwD*J^_U`qNm$WgmY=;{E1< z@xI!KT|c>$8m;!=nr7<@wPx#!)M%a*fW8$fdZ)Ig(fW4Z$mo*suo|$Vl)mYude<>l zS{(+)L$mdZ0?O6f{o-z2w5Mu~*WO1z&GwV^@xGCfX6qW|ZT0s{t6&%EuGywUJ=lfX zHrwBzM98(jUtG)`_KWAZpw*|jpjC0vn2W96sWs-lR*yKW4kNLO4X8QyHn-m_Mxt8{ zyl-_7ezmdHArfwNSf(mJ>l@Ki1K((W)jHILpz7IZBuD|qZVKv*juuttzL8OKbaZL# zHvYU>i$Cw!&kt&&!2D)SSm^i7;`ayqj`s;Ss9YPgr|+mV8;>5=3|X$Sk@;;gk=zcB z_m7N>Y7PW#w0SZzz@>x3YnoR+SretkYK^Nu5dyj!>$l(LMGZyw&AI!m_Jx8RpN$hC zBF76R`ZKrbkzi>01YU$(DuN1U8hn#d@z5Y7c&9eP&zrRo8qjjDE-q;bFEza6by{iS zU;TF(1xH457VNbC&l>)#eV2bqOG966bX6ad^mT~_ECXGagj#KMFwWGf z)wSh_#^oudt+u@0U(_A#Tidx7BYsQG3js4xVzQS*G1a&05UT;DUNitQLg{5Lp0$Ax znwPE(NzjVc{X?}8{Tp2}RJ$|uEgh-X`fk|EU^URA4&Q5c^M)N9SxRxPVjm(epBf9d)_jqa*1DV`MQMqD*anitp0 zhWu*jn#PrXEn*tZUSV}uQ3oa9H?N#oQ-@Q2B;t-itsmD$DJ{yN8)d75VDW54B(Q2z zDN=RrVtm@v@92;aZ?yhaD(|O*or^e_Z`MYd5%;30by-joVZ1Yq%utKCi!i1kB|sfQ z+$jlWV0ZF1c=3Fxw%E_Diy|(SG77hh42YBB<><&@L_&Qp9~WsO%98iG5dBHtowdF@ zVYf?z5h6_9dTVu96N%JO(M3N@Q0uM1djH@UN)S%^rg}ylN-lMg&DiMZK&TC_8mxzY z{T&>n?d2bi2re`-0!doqjo800K7V_~s#^b@VU-v}{~s7qleY)OS*`2pw;q;Axk&dF zbRJw&@Vj&iy~`$Lm+?1A`ilS{Ec3 zHCY-R6|I;Pjc&Zwyf`9K_leY@(fXbwL1wIuA(W6s5q?`GzZ$!frn!2%z?FWN2kDBx zu>Xc4uJLhdad*+8^P6hj-Ko|3qSZ>jom#Cg!Wpff4kNyo*9_H{jP^CJ-lqTR_5OHS z53DDoJW@7Ek=c zsHV03AXoYic8H~sLsg89E*>vgDtv^9a1a8m>(bf7(j&vGGzYKUzovQhZ_wn;t3MPF zy9U~hsNRR1Z@dG$G=GXf`Gy-jfXMhBPauYl@5=>!dGBuahzM;g-V zdR@K;gJ8^Rp}&z=b$ea(l`HZOBTMTt@mFsf4E@5Yap^lF8u>-hVp2|$ssVI|0i`S| z8lExC)^#C5$3szH4h~5$?yTL}hlXoj{zu8V#5VrkuHm)*K|`p@>x!uRR0n;|u&#V} z6#{teEwzq(JR+SSEuw-#<;O=|g?21p0$C6#qar;Uveg;=m;sYW%7F8(rd z{8iQITRIpOd;}4vA{HCi#|-Ri{Pr)EhlMGKcTCHb?@EOL@{3F4PoBK1zN~Te3@j8~ zidUa&yn04cb>+L+J+tuYb5i;e(~XhU1~nO)w_h%k3RDCA2X~H9ZE29}GctlZ#Y9Io zj2;A%5FJl3So@lwNmejex*1wk>)1XRJG!p$`Zf6hBVteNKYX%Gzs>d^Hrii^^Vd)g{mb4e^hD!SE@$ zItWxr%9TIT-##x54VAw33DuE+HQQfrw!f)48XGZRVx(`~s#@ViIJHz2FQTs@{~v$x3Zez`N&lgR!x#c zI`62XUt&ljZ;s0HX-fZmjF5wW2Ce;H0Ny^s-?`i3_2u~Yby6og+d(1SBAxSt*^vd`qgNMhlk|`$;n(Lf$8fT9PG&1JJ&K>S{V#*KM4-TZ?7sQJD&8u}G2Fd{y-8RW+I~=Ve(YU6OGBXwaSHWQ}pA9$U`{>qfcrcp*unAD#DMU)8_v7-~C^=00N zytDSp&A9>b<1dC(SA<b4^!2W z^{7c-56P7+de_`seygu}eq^QCO15N;qEFp5FCw^e>tcX*`R_?RHTY3xW3W$=c5`m5 z+1A8e`(bUguko1``cE~uTPd4mP}&z8a~nq1NP({ot73C`ePS3g7R~yQY{0cYX5n}0J{AL`f7$cWv-4XP>#{FU~& zv_$cm#C@~=v%aFl{fULZBbdv2ZD?tI36i662~ecK@P=rYNW?Ak{;SvXS$Ki>cE;8$NE(m zJB~6opy`z+Z+%ZHHyZuc_v#|c;NaK*s#hWAfN<5_;BrO{9VErb@7%WvN{>Xwcpa~H zskpuUM`D5eGl@;fTkloj`4FwL)A9%0a&`#8jauiAe= zI;FrzkNk2KEcm+L>A~_?pbP%1FBNC`L)a(Us6X%$W4A#>NBUd3;Q$GSxsRtNg!1h_ zDJ@Y`Km(g>&;hh7n|LV+o1dS-+D#lt?zYUI}(Pf znskJ2Xl;G4Q;jD478ps!xs?=ZkSaTPmj(S63M`&Idj_U0VF4X2t&&6xC z;p$IBU!`d1OE>zjULTNZE{x$Dn9M6{ur>Xro!^jVm8~4?TZ#o5=~uBh{QO8C2`Ob< zFeM_>n^9{ktdzSpcT)1+HzugM9UB?z7YXGNv1lO=DW=j-vVtIqKS>o`%T(7!#&i?L znwP$=@H2YOZz*oaME^O?5(1-Gu5V0cF#^&pG*hNqB)%wAh{u)d)l>0S_{?C8 z^<&G!tLg(qL@9$r_>Y;M3nZ)tNmvo>T>YW=JqA1@^}$j3TC$bVSVl=-wYt7k53lZ( zY&BbdZyo80@@RAsGYW9w+}n}-zZ^7S*L~k=WpH4QYy~J9=5P0tgqwR?f7h+*>+h@* zaiM$)TH($bvKp&MvJ5FDGKAJ!0{D)?Kg$EMwn=vN(h_AhBNLGF@#{Oa^wl5NHkudX zieW^QOckNX+>*5t$OtY@P$%0T*8__cSSh@S6f(ssOCM>a(K|&}FGv77*;NziQO%E> zk0qn(uRTV8jVL;jdFz!$)5ryR$*AaUYgmY$*k)9#A0zdpTB!ocC=M|2H)~-hR%p!K z-hA!*em&Zp`+Q{d&o$?+FUP^=LP`hkE#7=?7|M=EwXK4v88<@1x$BKNngc;f=#u<| z&!PC{J|ETJ=BU!H*pJGj3`hFzMCX$Oo4ej@>%Y&ZyU$C+jCP%e*)2~Cfoxr0EgF8k zPXkeFWx?jgrMxgOJHr zH>@sV5>~USFw4qUh5-e|3h^6PcC1oSBsaC?)5j5gK=|pF>RK%w6n=67V-yR9>;;M| zn(a^H^$lv}gdjjVWpHFgP`ur^GAZDzB-!##u*gbNtccl?i>lXXKh_z(GTTeYTgmO| z$Auj1SJqnVDXX+Dy_7J8b=BBq4Bx>S@oWEy{u3uV(IAyZslYKNWqh1!sc>YFRx&3x zj0~jElR=0WYISExUrdgQ?dQG$7tVd-j+j4|Sj~N7X=CnB8*_gm+ZdICt@_6&68V1E zKu?u#kOM5Vp@jr1=9Bv66-ObH|JsK?W~|dcBH8U9(O|XIrDW9-Xe8q#>~v+XI7@5!+8Cv41pLZg@r)7d82VIzrj8vLBKr~I{@J73R_z&T-NwwPD@-iUZKAzQdPTphA@Q1 zN)e33a4m|&5i%6Q4{a1E`dOicSp83f^qyA`ASrK(y&NP9)JGNNF#Dwu`X`iK6_XDx*3Y)gk5y`iFp0`JvSO1$%sfaly0?1)Gsozy$K)do9m)gxM zPmYZ?+Y?c)3IOcjq6_&uQa-C|BA{HcSVW|z?&S7+Z{lI~-nrG>XjFfMvezaOcGyI% z1<~;X&|sI}knlrvWu8>`_W0ju!5onw@Z04Tc&e?pG`w$U`-Kg+{kCv}HKL$3+drZn z&*FvI0I^uyQyJ%c#RzF3`uIlk@}Ht<4Sm_Pxa~so5i=D^hATKxP-E+uud+Yj)wh`b zSKo@Ep>}eLO7aI~QRAij4>ITzEAC~VQp`TEC!$Y#O`^cr>JCW>wU>_3#j3coPa(j7 z{CB0%1x!e^CsvJeIck^7v~e=lCNU?eS5t_sxK%E{DkBuHz7@B|Ma-q?wFgNiV^CXN zlwX*8TTEy;NF`_{FNr&JA+A<^G7J0+5e2*rL~ZmL5KG9(M`D_De@O=|g$e!Y+!~Ww z)N>_+*4f&=B<0d=#gtsSo#9@2d37{E+QMS;cj-2(!c@k(C{eq3hYN+3Vt*Cz_jb=y z7}POUxLx35+uK)?`pgsxc`Fo+=@jvlvJFy_O-^Pd)47} zbkr1orXlO4jr_gxG_jMmcqpK1UsIvxL>pUJq#0^l`iQ1-sE_%S^o!Yk(75!7CKd^g zf!CWTL0PtC%;1ldjl!3aA93yF#-+oswOp$Wn%)t~;oOh3D?vTZ{YW;#3WR9$q5@?l zoyO#v92}QJ)4CR|eTSwca!Vnp6A5zj+NXslyCt>zu}*GD4M#=?*Abgy^4NTJ4ZkTa ztmxJjS#+Uw6YVWQtIAMrF;wvRG%rJJww5f4rrIi_|Fm_W{Uw|Q{lr-Ih$y9NNu3~Rm_vO- zL#T2tu|e%GHR~&Avvi>NpE?*BUtSwbB?6=xNK~Xm^ID5svbvWmM+*3-2rvXC2j0AL zJpMgt{$=ypWr=0X#kVJvN?h8!@`6&eS`zwORS+*R>v1;6%Udig5`1LO*=dKR`-kNR7Hz? z<}?T{GakKYq)I{sVwYa96eP?K2fFI2p;%fsY<<-a zYkQ*4Xx|89n)^FMNLGlwK=6HY?q^X5u3U(8_!*k#(yWy3Acj-E&c8-vTEA>uUd63; zXK5=IoTlx4q+73Cw4b(iqiEc7UyLlG1$~x8zDUUzVnUnETMGR3KY7d}$}Y>DL@kVH z6{5tPvb0*LZflo+q=)@QF-nEC-9K!<9ks1wb+CC-=_QS`x|bAxUQ4Tk+7+d2Sah7E zeT!u_T_v~j=SKR*+|S4A%Lhjk4E;iK&cAme+~y^bL`z4JK=1JPigKIK7PT9M<-9`Lh@8YG>Jaw)_NC|ywW3&HVo-C`F9Dc{ z(UZb=rfRU?eiQ-~er}QYkbl?7KWguxBDRs{r8VMEysZMub3mCuKCvu+Lrb!Uy`e*hFL=M&KmB|rF9V?W^Y{wvSB54y0j1>&AE8pQzY_kl%I;s ztY4TJ8@vQzh!?UE@?b8;7Dr}ZBLZcj8b@)UzoATe;8R>_q4)4y+tT$`Ki`@?|H3Y`=M ztPbn(8;U_;$;)FJ8tRL$v_w==;$jM1{{OP~F7R zb{f)>hLJR~6!fYd7$>;V%t#|YLVM|nZXIZi`+o%nu#Yw!Pm{-cM5)1=M)eC}A@|NVZfz4qE`uf6u(21c|qK4lPRP>+C<;Z1Rfk4ri3KDjYQzB^EJ;9k!99_T((< zuv|M)Ww@xbZeg%P6h&ktlll!yRA!M!pEQRMG0bGK?XZQ>i0|k7l9Dti-559J{IDpt zTBGWjezdQIOSKpC!7xlyV(x>|&DiI50ga(DmF9doyS$QJ z!1YVgXM5T=Ad`X-W2F=z{<1aZP076eY;wKHbr@63=I9(0c9BlDPO)Ku>SA$S6WW}g zrh0X(e3>{mOXo|VuNIe95+Y{SIKli@eJI{OqtCm~QD}xTA(rSw{wA@Yb;=&x8uEeodE)v`5B8Y(|#O-O4z|K|T0qk9bqfD0#MEp_)KL&j}% zuS1m4y`JeC-7660I}HLa2?F^}>l~YV$?Ap#ClHWiIBOl6g58FR>i(RxPu10kn{r3d zcVHdmrv>?iDB)}_9st*o219!~vRex$3DcAL-@-*9?3l8Fp=d}#Z2Pi~2~aAH-JCL= zYZJ0}ARuQ+WByuuRoeQdjVgj#+67MLM=j7{8XdmBh9t<^;QEvMm$HH;M>_PV3z=b7 zoRza}PlI)S)`1m2w?B6js z6p7gK_tw;*BTEd4MK%2-3y0Le(CQ?8xuX?q%5<|nVd+H~PQ?uI9m^*UIO1XZ47qO+ zB38jpiO|u7&o1%A%A~Fuc~srCA6sN`JWMQ(j;FdIUD~I{&_7pp5h~r;=TJp3=_JCb z+R;~0V=7i#%rI1|Vvd%R$^7T|(-v_4b4oKSD4V0DGHfMvuQMk3B?(s~4rOVM#OOIM zC02{c2~ngZBEC!qll&KuUL^Bhp#O|V&VK<1vfxbe{;}l#b;v!w zta1OXGGTN;bH7BNq2z;j8lV%17&8A5T0vj3eP0(5auG|Wg>L@Om8G3_;Vg;;gH_r; zES6Y9ywNvkaaaYB=lxA#?52xFP#HX~yeC*7K1sf!1?DH1kN&8RwVDOcfQL8`sb)}e z_PH=qYO^SrPL9wH(T%isvoJwUO~dGy8Jr2Wm5E!a&~w@605^zME20eazh)HWYqNDE zR0r#HSOE3$>M9E4BcH2mV(=`ZjTJv+B9T*!rPN_M$)7k?p^@!p?&>;oMS19Gn&zas zE3`FEH#yRzaTwZlEF&4otu6{K4NTGz3bI75ZRpxLE-TRIaTS}4z6v6nP%^ipBEH&O z(ldq=(niDn^;FcKad)8?1)L>g`nHp^>NXZ(aHo(V?QCn98Ze{n0mUcqkBwdR zpn$@54u1dGU&j$?V>8mI_Uuy(nn(J*>sp(rI> z0ty4TVpiLU;9de~Khq8tQ3pP5+39`g#_acyx|WqKa_Vbt7j>qD|F&O@)S1eAMRmjr zIHbW2JP<&l{KHl!GLbR~5^^TT2RhY~GFQ)(Q7)rGhDl_rWSb>pwv0KDG08D&M}H!x zZ7XIEMttG^K0mwf??aAKoBtLhs8;_W3lb9HBZ82xWrLUY&qUS*ox=&9x-BZ^`RO3QXGQyBuN z+Whxw^RI$f5UZo&?e^cTk&yohUesC#YNUIUKRO3@XorzV=s+crllj*n+L#tUYhttf z8*U*_(`JIBxUIW zvfJV=RR7Z|DCFIhyh&830juyI<)204X zSj=e&gk*ee7cl<~LisDJSO|(CS*BUZ{5Q~8*DeTJ>q^Ygy`nOfH6-^zFkLAAys)RR zST!3#@GF&)Bu}{pef1_V`pck(73Qc?H#d+2L|H-+gYr|gFh8Nf^>5x8r-xL15v)yMQ7zB0d-*k zN(zeU}M;j$G#E?g>Fk zAEvOQmc(=?kxEiTM+rd48I^UFkvd-Cen%{d-$)&=aKGUKTYvzTW)+?W&}Y%Xov%S! zIAlH&7Wgpcj6#>UYmfG{PE<;7!R8Tb4m%{z`55fa=eLEqZc1jiu-hRwV6K2a)R1&}E-GUQ<;z)A zwg^2%NjKzM!Mv^+9$Y)C5u(n0d{G$-OFNO`o#w}ij7XNQ5Wib#v6q;Z*SWNDK4iH<~bvkis=vHQwfs_3v|)r>1*?sp|p zcFgALW8%#Hhpk5ON_wvutc~pk8(;l0C_JQ$1M7fE8qnsnwYu7ZPL1>xj;cC15mGP= zPgqq;yAUGB!AS6jXaGt_N=>4f9IK(0mR0tw+wET@1}Nf+jM=QW=~#>oAyWUa#WC1j zX4kQ>P{zI>?hl^8RAtX1zQHWUcj6qEK*Ph<`_&6=u>0hH3oq!86`m`;fP$CBF1(;IVb+mnlOxaia9O;k%`4A}c{C5JgR?r$GxTPf z2x}PzhqYMZm5x|ML^TYP(G0V4iH%kY3s}_+U=8(C7rY2oC^ z5`@uLs%0gcd6owGHakIZ&q|7E`E3f7(>GZfYnp=5Xr|QMrkDrn?35hyAQIZYr5^Z2 z6}OWTfHhth#6nU~cF=uN;AX6g@EId^n)PN_Mm76TULcL~M%=%eofRt;$|@~b$wJXD zf{)V7z7Ix|G9@$x9r$C8R}4}}b5*m$llY zk&JA8$&j!AljfK((L6lL>*_S`xfC8gyFAR>()#-P54EkHO_b##iEN7dXQa9quS^kS_6)nr*pElZP-5-?Xu8Y7<2COfyR2=m7iV zVO}r<+7)wmzvP<8+iIH|!R8TTk(Q*o;VSz*ji|yAkJ&;SW(36lxQy0>$`LB4j|IQWP`LpMHLRF0}2hH-41va)Srvj)7(rIQv{FRhKg! zPx5q8>g;n@`WYnhpkB|>$U`PbRq_J&SJ^an0xyD(*3X+MWeKcuR70W$x4WdR!C1%9AS* zWR)jY@2NA(-V-Y}={IGc7p{Vw+(f0~gzP=k)FRss(u56nf1^8}cU#bhBSBgd7@Z$SA%Hz!HX^99&P1lCg3wp{I+ z1eR(xX=R_plTJj8Rh2+I<+!2JDGSaqoXX1LQyH3B;Z(+92MF=Va%LiAftrs-z9&T! z!vQ8P4Yusuh}rTz?)af?%v)tz{5`@Bz;|DvgDF-=JnegQ>e4FL5fVj)jUz+&fP2QU~5 z-PE9V?9-~p*w-&HW>O;rm7?buj>)mZst6ThR~KJ3n$}PqA)6)oBGs+rY}5~8@mvvdnt3?;dn(6-F&Wt0q!O?DkXA@v9-oCm{j@oJ!tRBBh;vi`k9lxyK+-C7690w;5K6O+k6iU4j|gtSSkAM2I9LLcp;fj+~>ykY?jU~FKj zE2Vnl&nubAFpVHX01V1&a6xh;E3rFqL^`1)n7b*p|Jb{GW8uBH|l27hS-iIK3w20eAd!YO}Es7Ks zaXdd;{M~KJ*2bD~=P1#oho8*tMVe~#d|#7}zcC@W<=MV{5~xftTGYzge-;fk&;* zD9FCAOG3Tx>zudzx;79|3)IdhcQAp+NXmuFrh!II(z;TWzRi~sQQ8tOqm|XGu24DW zYfCid4lATE5*=_C=$NjP>Lzcm_~aBJ5wD3x$Y12!G){Eck1ftn^wV^TE(CfPHB6MO zYfOgf6eF0LoUS>Cs=XN6HQ1S=9{X#YdZ1I?V%z(m6$S3^=d?J5UTT_M;gU-`xh^U( zd|dI%e*1RP1jQ^5^jVgY7#Lc6*BB7)08hfp9AE1p}xG-Va{!LoOG8XpV0b1LV_KD>F zHtaSv=a2evAYCqaAd(QsUvrzYDZw z4~tgK_hnMaS)$0gyunF+bmOG>Z}W!y6zvj*3y@oj?C75Q0uoGH0yzr|5fTZYcHo}M|MH33f9SSA72Ek6e4z+kX81zkA|uFaN|NAA0)}>%TnkvFm1B{d-r< z?0x+&etY}+f$#jqYk#-t&6EH5-xhsi|G^LU-1N;K{^+OoY!;!L+{n3d0a&=UAbpXTKR_0i0E~v!Qj@(GP{N3 zN-%XMdZ|Y*J-SySOS3Fz|1l^>Lpvz1k}*fdTp9CZRLhtzqecd|pa$jjL)Ha6z)^Y5 z|Azm5L+pLP@X@i-momermE1GWVH|-#FNnlnpSha$xM$DwxVheDnfR87UOY)f;M4Ox zO5m^W^hhE(& z*6I4_RT?2c>FX=;{BHgEKV^7JX_o)mcL~c=!k_grhGj5>F&H}K!m4uc3L_(@NxU{TGc!$ z<02UgWLzxc5*e4uSSaH%8JEkrLPnj8MKZ3G@irM($#}brcgR>QV~LD+VpM;G)^3G- zwDFu;hlVYhMODG3BB_}8aE~JhLcBHxUavj&Dn#z5X?kd>7~UT&_!Zupd=CIxAG{MB zz7|Yh7A)42nePeS5&TB*Q39^QQ!k<~4X)vxt80nyD@08$=h^KQ1pYRjF0gVr9v{Oa zxenO%@UoF$xeN2%LHP+NXZa_|lxFTR99XaJueqey6up8JzF<}ME+LKkmDgNN+OOjn zesD!%cx3zTfx%4oitU-!q5jUn-7B_b`nx*^20D9t1|rX*--f}#{?3-6!OXH$_dsiJ ze^+PAved6-`W63%rWN)2w=8wzP}ks4f98gs%+O$ex@%c#+fYkaXX~$KcJJuDGt+ZJ z%j(tX=GNv_4Qp36W$M?gy&|!r?2_%7{?2q)=O@yG9D$&8BHE&Sic z|9f3xtKlXZv_7G9670wv$DM?+d+)N zMj1OW_AbR3Ym;-6Y>1*^^$-Kg=i6EX zvL7rX{qSj9Yb|26aMn^Wt#iXURivoe>^9lHC*xI&Ts_9{msEE+O)b6Tehg!D+a>ax zcwsbos(e&^!g8`*#Lpg*@lxb>w+ic!pF+pJh%u_BkB-Q=Tk+h@u^z4}IQtbDpT^kx zpu9P$&KkjL_UB^Y@WmMXVLF-Gf1ZIxC)ZEmpw z4*Ps6<#=4N?ofJv6)5gpMwz~;1f5ao-Kr1bXZ2LRW{wi#xMq)Ulf@%q_h_O9=oY`dhkj7v|Dk6&5)V0o_N=BQGeTyRS-_tqE(H zYm02^+}tvSZj_(3-7wDG$V6zNLjmfw;n%__IUzyrNsKI`qc(S_tfE3+dVq5h3VYf| zWu40in<0P03-#&np(vk|*sM=;K&m$PViX`a%8#p0l;Us{V6de>lOrh^hh;otp~sP| z%@vfn^upEH`gg8kJQ}9w769MO`~n52#`$^~>u}~?!q{)lP4ZL!I z_l2;+96@%ytsQqf9o&9IoY7^WlVkD~wfjg{JJLr${$d#o%E6uB#F<^9iu$vVA>|Rx z$u06Nki-G^zGtZiV=_5v@I*8>BWxn)YA7PVmB9Q>iqV83%O1S;GY}Ug_k`6M-K)VB zp2Sd+tUvk~J4ldJ?IhYZIN0e1vK&*t7d|UP2sO4*#wLpSEiAcO@*3SMFFFg#Xiai@ zwrZ@;fMFzq!#p;Xh2gk$%}xZU!7 zR?#Dsve02VWGd{L(8n~%lx$7tW13^3Ba1L^OW2^o{Yv_vbq->LMP+o3Q4c9v2~LNj z{v8RFgL=g&56PkJb&KHCc?^>|dPANgFNZ+4?kF5ng=)+X$v!W+RV*rtvd%siS=l2b zV?juLzsQS2kW<>22;FY1(4%A9l<$svu8S7LC zBd*Rv5g|A7bTZppZ&0~GP?56!$0p;3al)~91)uT3$=pFk zAwt`@o0}k?P;`w>ZV`tZ1+uM^tx{D(JmY|vQ)c^WJRPN`41JZfZ$Zq9EAy0mQ2y?o zO^&{q*WL26ZgH2;;mqEnxO)vULSQ-ft&y?bgO2KK7!VYspX|-EdNXpeFadAo`{AXV$R_vUZ&`Z?YFg2J;s$wErIXC*QX~l0W zWjKQ-8ID54ogL6nJP>vPbh%8*wyI5}ub~K)R!*pBfzSRX^-5mj`oIDYO*R2y^_8wu ziPLIvj08C$=K%rrfbAJ0&80>Fqo8$fpHYVygXG?09gOj#r!|CF)ZG*qgDOqx>b9GhdQSn+FURMTl>&uivURNe&*Ovh-*{bVjuzT&j(Ymak0r(Wa z^ORQTS?SXd<1CRVNO_zEzMMJpHlDIGPi5kPeHPukqNfM>+3FcFPY-x>MPr`66V9R@ zSWND_f|smfp1woQR#(M5eYY?gW1jOIh|gBf)BVD(9qJ(8Dp_N(eRt8qn5XZwv(@D> zPv3QCt7peNIVESXs-DBviMANNK#324uF2ukbfvg7>(Sv8(sMxNXZVEgYj#_7xt*^d zDByrk--i{Yw_T^x6T*P`t_LC{hysNXzVAH3oW*AzFKC6$=Qej=7F|8RzRbEZL;{Z} zXAKK#>t|FHQwb|P!noio-EI5BU!v~dEe+OVh1H;3Gk$z>ckUS>wzB1sb7U#!V%2HnjzfKWiLlQ>pCmG+!=Iy=}ILqp~DmySL8wZAg z{&RN8l)iQ7kC+F~hy_$k%5l+w(^-UR6d!MO3A8u#&1&3aM&e{=fICAosjbUBKSAkMbHCGqPEqT!J zYnPIm{MEKtF~Enqdw*JRu>l~;&j-}n+de+2K9w8~G=e|`F@V4=%zU=x0E=9QO`cdC zw6U=B&ug~H;YUGiI~OW@wbbdH=Ry1hXxjNG2(CgbGL#K{Dzj(NpAlk`g<-XnY0Lpo zg~%=%M`SH2K2dZ9SNSYy>f9P5aE}_^R@WF=bB-&^c$UTGsLG4@e62Guqj!H=401D5ttOfA|h!><662)^LBHC_4*SP+dd+!c8a1Xo{C)_Ks_ z(0(NpQy`=%b5ag$j-Xo%W~Gqgiu!@CC+zQRjU#2!vJ$73JG`Li5u!0#9-c-!NY-!~ zjiv}$DUGI!5>Z2Il_yKq(2*C7Mvd6zx!J1}o?XIRY_C;vQprNy?Rdz}$OL)p?3Biz z9#7{L!Q{wEP|#IOsdM&x$M6X@+gZIcmv^_;q zJ+?4rUpmL(yOD5f=GX#DUHCSF*?@l;7}~ne_?j;)!yeu?ODyR*PGJWY7?~ z%$p8<&E@Ujg36!OnI|TY3Q`&$V5SQKbaaNS?E4Xt2oh( zm_{cRDn*Rsh%y8)A`RN&xAvNqgiL!n8l{gk>S)g<4QR0M0m~Ngxkns(bY0D;V^s0A z+>AA@1|7)UJfCM8iW;T6Yn^DfL3R(D~T_CrmhGXmx_I2iru8sHwpV zWE(vqUz?+`1A6zSF-a87510q4MOnJd3;aB7&f(LRie)x*N17B!l~j(w9lMPU7Qgu6 z5=|Gp$WwTvdlW%jJ2wZ&uvEGaC%JW0-$goIL{5-4Le#OPHe(px$X*&%S8sh8Sm=zDSM9TPSAa8lOWvYdh&Gq#@1aJdj4SoJB{LN(H%`)?n&2pB7h*5Ag z6CpXtyLygtG8KJ*YTj(bJ&?2945E>RS*HuvVjxNj7f0IRJlBm0~+${e%` z(U%@U^A*T`12O%asBWkfg{7mS9&5?-W5&DJj z(Lgp{jKMuV3@v(8sd?lElR-bN+@- z(_};0a0@dWL*Xi7uW}{3t+P3Hz+}EjP{T5Y5)ZvD3$p`lFsrrRY^YurQ=!%!#$YI! z9o;oZ?4g+burBURZ9AK61xd_w9lm+)(~ zJ8D;3jD68PaBDr@<$By|KlVj+md)OcRq zfz;!9uEiF%e%h*=eIBWt@nD=Z$bN;=C0fH)qvf{Q+{N#ewUI}S_p$r*ElL@b*|eJL zd{|vl{gPv+k*s`l^t*LGPNfB9b%R|LbaASptgc2Ezgf{ffeAWtx=6IoW>9%p2jLBdN$$nSex*_{+JoHESx~=K92k?YR8XNA9Ep>&j9Rhv z=PD3ZSfgg|gYemIkx1WYAuN4~(5oWysxW+Yx)Tmxo!vU)WVkA*viPEX$QMDA&)5KW zpJd?`5*o@ugI|%Ljf=JPRISKNZV6pU>?E(ySkD!f3dKiJCD2jKI z(s?pch?zZX(LU>G~F&PQ=FR3-KA z6jdiY%0NU!Ke0zm={veu9(GP3dk-5z)j|(;IlPa?yyHlDhKPJBl@Xro53_U>u43{2 zFq;JvnkG8>dRZ1j!6Z$pykihqqO!?<_*)e8vs2Okk-Lpt1%%rPlZ; z%r-_G2&{X_DCgGaxw9csqgUb}2|31Y zy|~bTm0M^IEleS=;^mULgBG1fupz6un(J!ng&ig;cMwcuC4{$ag%@4g2nW!{YUK_t zRZFIg4?PT%aHL5y^}VzTu_hf&d3$s}z2+@mP0c>xrvyD2U&hUQ##-uGJP}`w1zjE+ z(P-CLEst_-F?)y7G95bbWC4#@wzJ9&27pPBQ?WdyhDpQR9yE40NE`%>A zg{Y&ZA~l?Qq+Gpek(3oks-Bk=go;LuH3bF2Dk0zeQGGqW2N;=4_AS%O0Ds=y+qaCY z<?_?jm?eUL!i94&$_P$6RBM72~`Ri(|7!&P_MD7u{x^NFCaeaK8Wm zZd9bpxvk?^ct#YFIEHCjyL->!LmdACqxRiqv3Y9_$FTYXnt8Zb3$c%Wbn#joC}V8z ze57PNghfNOceV%aSDbOBzzNx5O$pZ~87);bA&D*wDjWj4x0>pU1CIBj9LM!% zqfa|e)<5$C$PG+~4mhLa3F9OVrW|Gb$POPqU$-7*rud@>46E#BeBUfhe={O^syt5XBeZyO7 zK$~cIMjghRYa)l_BnDewSA=H%5Kzn${x~SBJ%RMNvN5Z~$Rk{j!*!13)$|?Ja$C)o zmaH|8GSm6ZM6d)R$gxJ`Qq0_D=UgyHRLGGsVNvl#^^P{|wQprk3Yb9r} zGMr{<$*W+(>Ac$N=mm}i&Oy^P9B3IIyflPH9=9Ph^0-J;zFrPKKp74caVDo0<-gAP zuQSIc=h&ozl^xBuenNPpENk;^E&@}pBJf^VSk~O?RHd%6u#qS!o%n=3I%Z7_$egEU zkZIbWmR8SaUZx_^9wYcoig^^kjlCyWyjG!}qNO2kX34Ehf)jFc*QGH{ssOt_Jl+%7 z_K!tUTGceC%UB`FuZr(M5)`u1rt<82)$G=vdiY9Iiy{tUGcb~9&qbm#TwJ9AQd>AI z(6R;UV0_TQz%oAwqJ@!o;E5RG@*}}=wV`w5)N(ZUhRMvh((nYN%Vx>tvhzG3a8PO| z)kgAAniqgzECg!fNR748J`4!$RAZ8hO*g!EDD;5}JYXzF?g2u~Mll?2r)d^w@eR1- z$@r>bczFbIApDU&$x)_qVP68;Qv(l8iku#?=57*btM0kgO}(?|RG#v&iDaK!{qvy> z0M+5BJ_tkVtO1U#AL(P-2j{8k>`J7gW+6klXH&LAL1W>-$TAAZm+L>3ph6sNjM#1E z$_p2>pz1n2Je%Q zz1C&>o~;V2Diti>BHjp$+Ji9KMo|b2&hi8GFtY_$Xkx<*#a^2P)Ds8#iSU*neqqMUOh?xPy9*3jO&o% zNf}Dh5(4>P#_WX=$uS;%zr@0v*>HM9&~vT?SX9T$W-|?qc{}M$`=DWvv3;y|T=6&cKj0l1yq!Wxw&?G#0BC<3rz8Vp%$TF`lp!FmYU}9mT zQ{C_c3!ovG%0x5;5~G*Od9nl0hi`bW0j4o3^`>NgltZZIh@W18n!@Lc$(kdZ*g)(+ z8)YXPvq7CYk)ETosChTvd0~#&RVehdoBEMj7SbY(aCR>4qJQZ$7&+E(VcxtD!fAeU z)zsA>$>IiCvY{Qiv5N!>GL$7>tn+~s?+3eP;HKvxSVyh7Kysfz%8gM-#AIno=D#2b zylE5g_yZ3O3DJ zy#zja2Qc?GO7?6;Wf@(^FtMShg_dIPna$dRM-^-U&8`FwHLkSt2i4g#4?KeTk+|k1 zc4I6OUw|cVtx4dTxK-4?1ZX78;O!uFGvRW=@i9?bF51Wl3%Jjf4sWk(nrC=MfV*B% zhqG?QbH)slfQ=qOuqNOdDL^nHB@>M@aqWc;fq(P}@P=18qFyWX%?r3J-Rbtg7+nU6 zim_s)#RZgHen^o0FIzwee&V5uo>V}d_*K?0_0J%-oJeX+K?vDMAFPwcFrOND4XtY= z+0tm{!=Hwq_6#HgbwKk#Axs{8U@MZrtYrQhJaxLGav}QsoGe`kKmk~#=oxZ(md8-r zI=6Fd+dypg0EyfKQURbVWibs~-PZrRuLJ*8NE31uC&@~Ue zzgJA@=xJmV?0CSmkG&|KG+#>yXV5G!*b%=cV6Q1K;RyPsDzG2HER2^uOMnC>n=F*i zN*R&Yn6Aygp~$Lo{xt=Qn4rqe3k8aWj|!kN2vU=yC*^kUDH#6bk5?My$RD@&2?QCl z!kB@5`J*(;8gUf6ETbol4<+AZ!8V8riwy{JK$z{VQLFUu^OTc$GsX643X2_;VA1OyR6!w+B6OL)uzTcU8~hyeGacQLi`8|7Z5CG87%ECt zf`-Y$?Vzt!yl}gHh99LkO2c2eoGyYgC*10PyPkhS6N4`jXcQx4sYA5pZJM-XHN8$O zOuN`!Qd1a^Uv81hn|4~8Zij-w_iHr*Pg<_&i!1waNVid65pLzhq;9Jiv#UW2VzRobXEZTiZe=wwP!{nJjPMeQXP5c{MZCaTsNGpx zY!XU6#MEi1bz2^kR(M7=)lKmtjm-8)l+>JPq3;(sAU6kk$PQH)^a~A+*`tx#B(bbF z*etw;;%N+y)l@?m^kMo{&cuN!byEQ{qnJc~%5cV`FMG*w@YQXVvOzw+$@2V%WZ_=`+e@8VWunOe1d_-LfcO<`_1dfsRdLHx%n? z)=DOh z_<-;9+-drQ>$t&vDIh%wL{CFoamZ#OQ>ykP_8P>EV%cexZu z7tw7c=t)sD7Mm&%Drq3YAdc!{06oAvQ*^9uj{+Rv{{fVLnG7_2@m1DZ!{SY=tWWY z;2gi8Z6n-fM{odiXmXjAU7^6SHFO0;S4v^wk!T3dMKylO?fP7#sN0Qv-Po)Oagnq2 zglus0;aJlyx9GxtW0m*UgU=cftYG26>7bBQKk1}qVUc7N;>0%E&p_E0jg7Hw)r*7{ z&~>*?^mynT#9UxlFfP<`$v!EfKDL8Oyv zA3lco$;Ef*z;xv-c!ovZ?u0p}J=%fr1iYlzATD$bgM+ze7M0_QZx zAqH!d>St4^BPo^x-RQ_AgauR=yWq)CHF>ZK(}z7v2DQU4aLAI|-l+PINrjC~xPEJz zU6MQ}&^(oY0;whJhIXI5k{b6CqwK~Jd|1!1Pm5r}k&b;@?Pd*I$G41q99G`t_LZF} zlPjp5V!Keqv7qeH6b@PIsF~K>wDXJFxnXJs>SKo?C5G{)LPwZ}F?{ONR`LsSaK4`p zONtlD`Pgy?yT+pQ%MXf4QN6e>r|x2%46>#QwO;hM2}8xHnuM9htbA?L#_cfIz>dls zGgMJ9i+-}ULCx2^j}eYuDA{wkT@obw&@_nB_sGImh^(m)x=+;3?lhLuQI->AY&?W? z=l%Av&N4CJk*F~=u(9w*r2*{XfTu$MHX~-!0IDHBWNPlH=A4??p-mDf96`IQwstVA zN!g=C#%&CRW96fRfdZIpE`@ZeNntz@0OdtvbF;`(b}og0=p9&%B$1v%KFjt z`2|I<=Fk)CGsrT#curEqxPgj659kc`@lt3rNY^Ql8UxGg*|x0M%W{L7?L`+^8wJ#Z z180~L=y;~bS;Me8Lyf(Q1z}y}FnmUnAr}zub?XFiG{a{M{*2r)F;zlx2$160Y$B$^ zNP)C^lO~B`_Pxd`BE1Ziz|9CN9Or)QKi327q zRh1&22DC{0ajKl#F3C0cqnqpqK|d5zaMjo9kb6Mu39#%wl7dZUf5PmXI0jfR5R+O6 zqnKAin<-Bq9=V4-L*M}M*bKRh4^48L4mzQw z#j-Bqq^d~HXZr=9S0CnVSp~Ui$4nC)a&F=wALO)K2y#i`=NL_3)QKc;Q79F;FQ!+B z;MUEG$VyQ-5hIVLE$!3x3m|CFM_*04RClzE1sP0@q>K_U7P)RM^cb~V2CC{F=m;T; zhbTXb^vfW>fDG#D(yF-#FV%PX``jP<3Dy)hAJ=(2I||sCISYqa3sQabDAXF)GG`A# zAZC#~x6t9*UEeBszOHV}M9@H}8SObV=vM#lao zMy5omnhJ}hkYiZ3;j-@Dr^Pf8EToflg|Kj3;#>QIB7TqPC%!1dWnw4s6|P7BQ&*%j2b@$K4j&yiuqp4O;C) z$<>C;C<~oZxcUx&xxVl);XDzA#UYmW{OzRHRMU^;fKF2W83@s))DGwAki89s~d81~j zW=Xjc?I|g4C>olKzOj-)D$|8#s@rOF8>7_R2T$xmM;IG!Bnr#zP?*JFCn$tWWyMl$ zP*z$-Ur`KHuT+-0g!xVRA1iviU><5Iibxjwa53-|XFZPaZLV2`5~%Ae<+gssEfiai z`bby^DkFrA-YpX?3<}KGo4L+RLzaA-g$fqB!p)MJu0gd~i#h{@kJMPKAIaSJ89I1| zY$JV`YlzL3yU0JH}--8;m-j|_NeT8H8{lO z$uy*gox_e6r~2k91*0JlcAU{thLl>Nj?}Jn7{*dx)m51XY)I^HGW^Itp*(Vz$z+yL zK|y7Lg@Arn>c($wQ~hv%y6=|Wo}2D&&GhL))g2xEy}Jey#4EFSGZl}G4mq-SB!cX( z-?F85=ZX*YbPn#w3=9s$?rgoGzP_=kUcaU__F3y(_4TXj8_mOqH#at~Y-(89pqS<_ z8~-!yYclDUruLS$OiOb^LnhPGw7NOdu&Q}&d!~71I}utNS{qh2)vvCvZ*NGaS2nF~ zX6=txoXX-`uf$)>4xUjt1@frGYzdxE8Ch@X6hSPrW>1D8ynM2jjP+&G&iqp zOq04b-P*XSyI{~~=GK67hR?&)8t?ex>RE+}H0^yGX;kJ#td(z#V zt=sy0@812sOwWdaflPNx*Y3ujC#+kWn^se`m8;V&ZEM#8tCq&b=1hBI`>NJ8>6LU? z`^pwRt6E!uV8g2V=C=CAmUNoCcXl7&!P*v}-oAQGb7TAJwzZ9`1g+K0 zD_dI|*RIa2Zfnf6wP)&E(sW!~Yx~;v)eWl~n;M#%>jC=emWH(r4QrcQR{HwzjQlRl2Q_j4>LTsYdkx~a8k%__RPeN|(+ zrF|7uXBRL9_8-@x_PUDwmq zyK{M;^Ip;0zw^2jIPn-b@kf@Rb0C#Y5oKp*&(0JT8f@?F?@nQ)tWvu=2Rl;zovj^; zlj`ps8dSV=Pg|-x-ILy#>CW^Frdrc|>6Xr}&cV*iz=|r%c3`NlueX12AjKujZ3Oi8 zq`SgmmZb&;`-fU}O>{O;JJ_+Js%pE-j`(2}2d=NG zTJGxDY>8Ke&KrCCGpUAUsYdf&8G3IYq}J*Fwp7E4mDgHO+1RjVKaEH31%<0Y836U9q{Rz4w;|9J>-h|G!0@riR9c)BQcaY|!{c*J%PYBHD3Ne}8ZP zFAF$A+VKmo)YR~}IX#%}`elR1FT7Gy!vmtel>b{YcV%ETWG+ihI@A2dmflu-?V+VB zv$Q?kHITXHqhd+k!t^ucyfeO9pGX8lOrBj#cWtSb-Kp)Zy?vP*dwT{mcMq=EHZ;%y zqt=({AKaaSWuVqOGyUdm@uIMy0o7^oCwcCoF9Q!}DfUd9^?G|8_t(4v?f@oqHVCW0H{g_J=3MtJD{rPoZ8#XUS)HDwmDj-$mt|E}Ae2nNqv_${oD zGi|V*usV|i=^bQQz+lO+ zj@axL6e)=8U7c+ik>s1xty=h`O49D?$n>yA^<@h5la)8I@hl>3v1Jr`IF|_age6jb z>ccFkLYkb~)uH7!>+*qgdxn~|)4S;|7BW4VR;{S05)0*?RBsQf<#dl4pk=@228fcD z`Zi5WtV0Ps4wru`+~jlZy6w9tq<5D9-PDXMV@V>gDvyt_VPJPptBb|5@-4(d26c5J zc)RuXxWbBgt*XDH;Vs2$P`r01g0*7Jw+{{UWqR6t7c9MI>UCjB+iyq&Yn1%f%)n50 z=0a0%Oa$+Vcb?}QI+@%1`+AX}Ance3e8bHc3VZ?N{rwF?gS}gN(`{ZHNB1p7GLpF_ z)dAAAWa#An7!MJ~zUl74Opm>iwe*^0;6i#3Vayp#8 zJ3(Fs#>5JiKxjiESZ5u!ow>PBRV*1##Ts0@?jxOemU!$Ph%*C9#zQbQm!<`lc?cX$914{6qk` zi_^d2D4seWBOo^>f_KM>^tgN+8J;GO@yy+gu4zA0ea7b%zNeO%B)91%x$!WXq+V~S zeYYfn&2bn_TBo-@VSO+WY_SpH@qES2on4s?{jD9HcV)Krw!#07^LQ@;+iTa|DEXg{ zCdQ*@sLw_S$gn*T+;TxV-rC#M#f&p$rVwp0K07*?JG`81vZ-#o$SfTAO)JPiLXXWo zh|D?%9V@QQ9OjcP>D|bF-H6Tft8F%%d+*Bh_iMg%A)9-8GW`fkqY-#Mk{nKnHZp`k z28_)jqX>&vY^SMRnaw;9_yKm2x;sCSY1@<@=zt*I(ZFmKh2GQy4QHC~?Ki;E2857q zN9qHK;Qiw=jV;5%3AdPmGQJU#G3fBt2e3+1&P;ZfCW54`Qm*eA>gr0}@NT5rL&!Iq z5`mL}7AtS7$?bi}#Ay!ImFgx*}D~K7_SVk2#5;LgX=xz;;g}xVsqbXRL+M zO{)j}t-XP_T9cnk=_aoHSxVPZ?_b?^Ni6@}3YReMXDR&W0(TRA{kxTJf~KFP^eu_t zeMS@Bl0f6k=Q%qa#pPjf{(DL7tc&1lei^$x`b&)q-D7= z)1Kyy(i<5koox(s7gv$Cr3X74{{)MBYa-ZsfjMvJ>)YO!Y3*$9Y*osV$~I8h4<&+a z7ntR?{?5Co<9j=MRJn<{HU+`uiQr;S6nh6t>Egmfa8W6}G-(@4w*zp$qqMwq>1JC# zwnXdP*~5;BVc38%!(Ge(5YH4lvup>I(nH$1)ixvhSD31SgJ>lBn`Ct!l0%#FL=H2* zHG~|HXL=LCZ0Zy`=b_rriqI~N+|O;H4GgB))m$!a-o=K84V}uUE7P-6LCHiguRpUh zbN6!3ng_PwHr3o~bUEsuXd3x|ZGPRFY44)Z;N6XBxcqB3cAA5QU~KAY^qhFn%g-~v zfLt4c;7+*a>2PUVx_z7p$DOo%@9kkhCA#?cMV?6-U8G^yVX{< zKy8*fgULG+!5z5ECIG*rR*82df+aTGBJd2X5Q)#Q%dum(?JU5F!)iLpv!Rt2wHb1@ z(cuVJ==Gr;H#)*~b9!LVhikK5P79-TR8cO-z$LJGH{P zw$w?%VUv}`)^ul=E9Itcv&wUO_h6q>pOEdwu1=QqK_EK4HPel3&xLI@oq`+Tyj_#f zz>w~a3si-EtuwPrjZ&7k!1=p!Y}~n)nl)^xv^CJ>V7+-)XDiJ@EpDy}y8KegA>2Ud zdV31TD2B#^BjH+*iI`(Q=H)VC9cdW&x zEK9YyH8a@1d&(HJdH$_x{jI&|6ir&rB09?!XOo7i!^IMY=u~&AluQ!7y=5AY9Y?Z|m-IL&THe7v;TO6QfAT zGcv5-TU4w-1$)(cr${NeL4X&KYB@BHs!_6+aQkXc@D+tBiOcX78|M64-QKIC|2x}g zp889aS!I-jb}KZU2yTya0+UIy9PC4($c66H3c0%5x+qIiQjZE9zrhnPG$yJVn7rVg zx3trzVtcGu0bDjoSA-)UO$4`1)#M!(XYz7g`ssEUg+2okzjPw?6&a2^T)kaqSq$IT z^j{PwtfT78MB8~+=iqK3rKYY{hPaI$HErjRybYJ&;xkB9Y@tf;g?#P!Hk-GvSDcEw0S%up&mbT-F^-J4Jfa zB^8h5oy`8~;%?SWqBKUOtWz?(M0#AxLF33nv~eyMRRi;`G|*A$s5W=NAe!A4D<02m zKiNE7LtNPQ3^b(;c!-P%L<75F0=t*9uI-lc31zEhH*deC)Z^n!7Ry0f7#;@%%^o*- zw{Wm4(++q9|CxTzl-2JoLdptdJIv;(b3)>cC6wgT9E4#%d5h-rQ5{BxmgScT&1{W z;jO`-^X^RB7Qb+oIAKE<>wis1AL#LIwAo5o^}GErHwSpf@*dZl09!QOldxMdyTmZ! zsX=TC)85)UC~1g|^r05Fd*@OjwC!Hb_A6^lRC57_rj#9cepr6nouAU7jU0#dhl)-I zYx8iR8|r5U^WCSU+CaXkyH8_7&JP!z>Rg37QlkLZ&AX7m7m-z*ncDU5BC5Bgq%eqa zTGA@9E54EHf*VDVQ#YhOX_h^%`P zXK4gLuMyPGqDSoDG(}0)V4Fy-U9gN{%S+THrjlcsKy4daw0;me-M7IuBzdYdgl}h$ zt1P{&MWkEmO;e%k6T#Ib3qzmy*4|y4I0!+e9ctFCLtUA99ihi^q&-2fE)gu9Ea``P z``gB+tuCfz{ReJ+m_6*b(2)3|_${@kKM{0qb}|9e-T)`P(0PSlHBzeAyI+BlLT}ey z8O2Y-%`6>cx!>EqbhG9K;NaH4*G#9@#$u^%s!n4#tOx?BHJmR-YP(aLNq6l^@0NA~ zIy20To#~#z8xa_>EABH9mWLc%3K<}iE~H*kis@0^_5!aC5<6;@R zn#a3ob5Cp6P@CJs+ZHVwrok~af09gY5;yXeGZ8VGB$Hd(TBj*p3N7)3q}U9%us!6@ zrb)gs5iBmjaygvTB7&GUs^U=FjGAbvBE>QjSo;2T8f7}aGlUY-c@QHAM4EQMTEbPJ zn{7uRqytt11H zk7(YUoetH6f?#nXxU?ju=5{BnpT#jWv1LK96fws5NR#H)kqBCuTsi-l;sjeKsz89% zPfkw3z_KxgqPDmq9*dcjhCsORpG4SS+{HngVjvOp{HtlI@xW{~m_kzjv_w@(-v8<{ zL)0q~<4#-j1{Ad71j7m3{NCaQ+aH={B&>(^SqEQvXQuz%RjJgvP&$-qXI-o1&kd%s z_jYJ`hK1!_xRI2+J$2o?tJYoT(}{gr{(*b%+WdPB>mR)Q~i|FmHF@4fHWcYXOkUR}HA<-r$!_kkzIF8{M1w_W%0Kd!#G zW6{8pHILu_=gSX#J@MSZJ>OmPYp?$Cx{p0(GX2+X{+&02#MW&(U;G~aFa6)=21^gk zRrTzrqsABU|7!m4By49aOc87!L>B+Mb^FHc$)CP{*`mEGZ~p3rZ=C!6ix0f0Jg)oL zbp!pa?$8?t)2{R9GOz2&3^p}86_CERmSFp)4UNsK0-wWw{}-QwYWdMG|Iyw*{o}vy zJJ&bV^k>v0{JkK1Ds+{8|0)(Q2tLN?z>Qs9$h&)jZp0=1naqkdNh0ibZV9>6)CUbg zW3V!43Yvpe!Rla5ur^2sEkSG07G#38?ji9A$M^{tB!+eDYC-|0Dn7f|vxD9{d z7b1n>8GQHhE$911zI!Ji%ZpTVJL z&jj~A_7A~bkNhae|It4Lzkc682Jb%b<6yO z=8yru$N%!&Pfwlt;knc225&iaYUF+A&ec~R|4vOA-+4#=DkwYmQ@(fDckVZW^<_W& zY5m-Ico|{_@V_II~`cD z=YnCiIo9ry#+}bWnrA?QJH9_RI3c9)Kfx`<|MmP2;r2`{9B=zkeDKCUoef_6!9NFw zzWz_ar~dd%u=|16g6_|q2yXt}Gr{)J?+5GhCxh!g^#*YJZjkK#pFtgPTk`Sm8{EQt zqAv|A{{9~i*Hiq=cX&P@AgtdHv7VlP?(p8d=KROKdk@HcM-ZHP{rGo}f1isPy!-Xz z{OU{H|D6)Ua0TDz-9IJ$@nc7xPsQCwjy#JqnEAug^A&#V$Pva)jk!;m`>(m=Htznf z%qGM?b$Y%FUmqmykGcPkASi!6=Kd=tu(-QENIZI^7*1Vh9f^fg*DdCD^+}|HvLi7! zHNE`EvE!sCT<{2jt|Q0g_V5U1(BSXJ+{?$g?*)FRis9v_aE9(bYj5u{fVa2bsr>kv zQ{8dyaX$`xcbyv!eplY%56U#|r;ulYV8$?L_HX%LWvcAkUY#3sXd>`G;r)945A#37 z`}MJKyzNKQ;KUFAIr!#FZv=n(_1A;Xe)aX>o(EnH?)dxA5N2Jh_rp5gp8Z7+t|oaZ~^cYgZApPo8*YNBz_QvIeueNy8yM5v612*Km- zZ9z~>Zlj|##t(uSQS>MnlnFgwEoL7JE=G7QnD3)n@Dcrg`l!{8%FzGWUg#If)n7#!{|hSMy5E5?U^^PAs%>ZzxW9QnEhPY73_en-AGdAJLG z>ZzxpAo`8V|MOw^pSj>-`2T4hQMf3Keo^{Z_*b8LSJ~fAXoX68!Lg3WI~?8te0+p+3C@KkQ(u zNKrUMj^8Jh`r$t^yBW*rWlJ9qf53vQ4nF+&aTopxOK-3(xA0{yeM$I#w&d5AgddBg z|1Asuq?yaWBFaA=4^Jti;*qJsAGCn$rwqSC;faT*3U{!b6^1`QzWo1a+5h^K;oB5m zMkiXlW#iL3*j_qixP$G-qww+Vcd!M_lh@zD_FWUg!~W^BTB)0!a`h|iABVRy36AnF z>3@f}*DL&KOCRBf;g_hsV9W2Tu72aftt&UtytPcr^ZhU{%NX{Q1LY`rxNv0r*Ww zzs`q?1(+l}am*;()5ao95?&Dz(7%~9{g$c1UtMXxBK`iZxo-*K!xt(N5qNA9=s#2{ z{tKsvQ?O3qFBTpJp9q5A3B#=jixdT)dNl}ciNakaqN3$L3~v()A8#f5AZY$W@duOr zPS|)gSpCdKnD3h|hxeRz-}x`Q@2qFsSA3Cv|Nr-w91hR;`uXpymz{gQ@7K45{T+T^ z_#u4fQWr_4ti!S-Vti*TTtWJgK6w3&9|wPX>}2rBe?1ZWhcACW82bFNAbsz5f*VI) z2{z}B2lIP>6fEd@BQU=6<1xOo^{C6_|Lf+0j-QSnveUUww56g}Up!spNyA?aGbpmg zlg69UGbH!7Oc`UEfc4gbDT|K?Wswe+X6Pz#WvOTAic-rmMGiI<|7MsX{w+y8We%d7 ziJ!*PIlCr_3BQTaPO+p9$|w3ynmk%c#Nxj~`ihv_S*J)oNd|vU`s(rN3WI`CZ_ihqbWYL_-2elgsIYpsbXK3 z!L;c$IghKm&qNuFOO6O4f?vzqqu;%;VvE-28>0wsU*Z86OMeG;|C>Dhvtcmb5b3an z{dY$(_|wHgW47U9gtwml=_rH0vBBo^cuVC!ZEPM~rsd%lM{hm7t&u}MlpHixqu=!9 zKOOR@?tA2Ly!z9(zce+jzm3Y4WxDbwB!8;@LehJ{#d3L~B>6PuABZLN)^QW<`RhM1 z{nM%G%76WiVvLFDBUyouG_m~S=S@Fc%-n2mH9evN0pRJ9&L@Wn>0h6ud=k6gQ-3gwwkw}f+*Kyy(?c5XkiYvKc%&rxmqP#Im-Gffe60NO>EpG3*vV3g ziLp(SzNGj+NR=ct$GG%>FJAxs@!}tn@N)c*^wxv;tNv4@f9P}i-7!8f?s4hK?N}_@ zCtUe1`RB*uuCh~l0T8RopESKo{<;64_~U;Q)3XT_{j7YS{BsjZoJ#U#P|AE~i=$guj;0a$6jz*m|+tbPo45jn-v zyAGT#eV+<*ze^v!fb_ole^4wj_{h(YK8Cw99)9@IVs7PPYtPeuU;ehR@OU?1 z#&Gv?CBG2-eYk|~g1Z-<{>#PA19vYp{X=oO3-0n`{Km4JX8b-p4tFm!{X;R_ooU7Y z!THM{M}Oly!`eyHLvthgV*@aTZr^$M!D3U(++bu%FKPez=bu<+v%=!fo4#cJ{7#Hg z2AeItIEr}rpkK-SSCam(V+`XAt3J>>PkI{wu_}KxhPzip#rxeBgG}lCKaPJ%{Fj;{ z_&Sx|iZ7|Z1OMdwPg$(`hPy8L!;ckn9moHu1B>-9i&g(!QRxpq{O6_VVIRWsNgv}M z%Zk-c?DlmBe2=)@7|UcF|5uv6SWGaJVH5tIn!0=euvq_C`s>5Q6hAJ#*tf9$Q>9OQ zwV3{?^QET&la)WKnEa9P=~aAG{uJroAEhVxxbjQV(|}3JpAl7G$xG8)^P}=7PtPu# z`­rY~9lg&pwmlH^bQMd%OzX0Bz?3?80K)^^rt42|0`j-@OxqD6W3#O(?%| zT=J(bF#WHNOMm3T(wCK1Uox}{s{f@W=}iK6LFw;&x+sA2Lcj}2Kf_9V`kP1i3x5}q zetDQE_PvnwpN^#qtrw7fW|$`a{q9@GpBv)oLi<}!pLjh?6Z;-NfBI3=MRLY%tOv&b z;8%(6 zl*A={b%}=@#SF&T#+QCd`yUhcU#7}nLh@7Ee+fx>yc*-mb;Y2b<=gN4pm_3%m<#mWS5%DSb2s!cvkT~)&a^Oxc zNIg{0-+yL@9S^Bwsoe0aJUcJX+x(wrb|dXRo3#0#njK;B0P=3iHEe%L%jaE$Vd)dP z@ch#*en@79>b}pMc2yU)!ejKI&woeHe?Q6j3L8TM76@O*AWiW0L0rZ@eu%rgp776L z|5@>VOBlWNS7`b3m9&2}IRD+KKLE%Gj{!JrgvSVv7=ckd#Axu>-qENZBk;xXNbg^1 zKfV8@_s8`9nciQO98(tVzyGuRbm?0%BIBYgm-FZSTZhV=BQ-qpJ>`R)u%#v6Q4{hCkr@n2!&|0&5c9;Gd^(t+ZSL5$ky7Ku>*_%^p zQBiKW+RH}$Kv|(ThSa+Ckh5)VGC zDs*JzT6$|_YY*5A21OIJ%Kx-fBzHQNxZJVy;O>u6M-tWc8FZRT@yO-9z{NbGXRBCRB&7Iuw-L%7x9PgnB;Be|p9LsK6qJ*3N; zbk)I1t*XiVCb}Lwt0X!2CS&wZW;ZyCQdUmlqu4qxKSePoLszuZaF;mF(+ipxKAV;Q zWN$`hu~sq{QCB~sR-|}YiaM=v7EM*V5pm5iQeh;uW7VOlNZEHfci^c)EBj<|jrL-} z^&48`OCOb)Ej$0p>)TGN^lh_u);V8;FT_l0-}OS?&v175NsAC#brwkOy4{cX0~$g? z5!a;N0o9ClpQDSXZ`zL>`|g-Q>Yj_XK2n5ai#f%b__%z)%4zktx!!AP`t_CYmC z`DPyZ3-(PU{~_{wXei~*L#K$SxN{AE>Plfm)miv-b?Q4Fzmv*U1bb%iZkt2pki2#N zHwW}BR@-(cby>Ss({lc>W5yH@n|2)>=g?ij-_x!&=OR1k$?&?O=@HVkXMF^wKJFAd zcpCI#>eAC0cHVSryI0tytEj9EK2XnlD(H^axM=5Cqqn6&B*~T%mH1lv1pEWGX3vSK zlrQy0Nq+<0ru$w%1&=hqqyZX>98D0a5|33z8eDa%jL$M&b#t4vYkXm#!j}g0Wq}1K yW}#k`d#KM~gW@>EypwT98jK3rp?L5=$NJ@~*XKae>@6P*8I`XOfqwza9=$C9 diff --git a/packages/NLog.5.1.0/lib/net45/NLog.xml b/packages/NLog.5.1.0/lib/net45/NLog.xml deleted file mode 100644 index 7a746d4c588..00000000000 --- a/packages/NLog.5.1.0/lib/net45/NLog.xml +++ /dev/null @@ -1,28286 +0,0 @@ - - - - NLog - - - -

- 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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). - - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - The assembly that is trying to load. - - - - - Class for providing Nlog configuration xml code from app.config - to - - - - - Overriding base implementation to just store - of the relevant app.config section. - - The XmlReader that reads from the configuration file. - true to serialize only the collection key properties; otherwise, false. - - - - Override base implementation to return a object - for - instead of the instance. - - - A instance, that has been deserialized from app.config. - - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Pushes new state on the logical context scope stack together with provided properties - - Value to added to the scope stack - Properties being added to the scope dictionary - A disposable object that pops the nested scope state on dispose (including properties). - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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). - - - - - Process exit event. - - - - - 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. - - - - 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 the wrapper around System.Configuration.ConfigurationManager. - - - - - Gets the wrapper around ConfigurationManager.AppSettings. - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as IDictionary-interface - - Message-template-parameters - - - - Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - Internal configuration manager used to read .NET configuration files. - Just a wrapper around the BCL ConfigurationManager, but used to enable - unit testing. - - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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. - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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' - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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 - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - Thread identity information (username). - - - - - 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. - - - - - - - - - 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. - - - - - 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) - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - - - - - - - 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. - - - - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - A renderer that puts into log a System.Diagnostics trace correlation id. - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - The directory where NLog.dll is located. - - - - - 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. - - - - - - - - - - - - - - - The executable directory from the FileName, - using the current process - - - - - Gets or sets the name of the file to be Path.Combine()'d with the process directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the process directory. - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - 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. - - - - - - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - 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) - - - - - - - - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message. - List of event-properties - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - Fluent interface parameter. - Override the default Layout for output - Override the default Encoding for output (Ex. UTF8) - Write to stderr instead of standard output (stdout) - Skip overhead from writing to console, when not available (Ex. running as Windows Service) - Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) - - - - Write to - - - Override the default Layout for output - Force use independent of - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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 - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : AsyncTaskTarget - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private async Task SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - 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 - - - - - - - - Override this to provide async task for writing a single logevent. - - 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 provide async task for writing a 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 - - - - Block for override. Instead override - - - - - Block for override. Instead override - - - - - - - - Write to queue without locking - - - - - - Block for override. Instead override - - - - - LogEvent is written to target, but target failed to successfully initialize - - Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 send the log messages to the standard error instead of the standard output. - - - - - - 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. - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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 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 activate internal buffering to allow batch writing, instead of using - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - 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. - - - - - - - - - - - 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Sends log messages by email using SMTP protocol. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - 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 - - - - 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 - - - - - - - - - - - - - - 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 in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - Force 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - 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 - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - diff --git a/packages/NLog.5.1.0/lib/net46/NLog.dll b/packages/NLog.5.1.0/lib/net46/NLog.dll deleted file mode 100644 index 3b2358c8cbc99b14f3e8e0b56f8fc808770c7369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850432 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ǩGtS&^%&kY9(s| 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

jc&8{odWdUzMO%iXc35+vQ$hzFi;o zW*d86TpymIxTv99gscnO7r!6yS{}sJ+?RbltD+X~!j795B7N z5Mc~K3c3=rhcgID!^F@si6(d-+eZYu8f2(aCO{`fP&>*khDXGGD)x8*lMx4W-8i_| z@l;cEZb8tFrbI5Gbrt!kMfZC+#c{pWa!nj3R5VhY5`(6?>i~}ePnu4NoVsMO#)ZyA zWbdDQ-g@M?8PispKA~~|PGNFGe&IJ}z$*U>$=O0qo>l>`my0goO&{=jxfzfI z7-6fG$m}apLq8o~@@D*D)*nCKO$g5SH;24ueNSUTw%Et8DIgV zfX{MW>e)!z2N{H_<3U@hEW)K7z3@#?svgA2$j`x<6vS_)W44l8D;4{!#-J7|D89zw zQX+Ov0QEvcd?m%x0S=;PT=9Gxi4*===asXU*tu{7JL4^x>ca(^^aAkP9RQ1#7BC&e z>~ov$6;#U6Pss8etp*)bnLJm{bX$hu+?hIY3O;-O3I1J}_*bW3u}UgNFqB~dmHGUy z^=h-k(9#s|qNsV>P-<`m+sYG5$pTG+#w^iAW({*s+zD@aZ-;R|0k=NUO$p3S5oA#` ztGAA`J=-|(nKS8Qu{QHc=BGv8MiEH3DA`-qt}z+GX_3I|`!&X|*O=POO1l+Ek~myf zU|vO3$UJ5I`a&>?ZAr{$2Bi5?KqxJ{l1OF(Wj~w|CU{JaKY!WbPj~SC_xz5oJ^3Cl zR?~+&gmC))Sl?{I`qA?tE+wga(uol?qvUODQV8%a3XVm)x(D5_t+*Avhk!x;jTLKQCCkdb#CKjz;56!1N($Dj*)+pF_bxDO4%B$)`2EozHB9QiuW3 zqbMFk8$>-}pY7 z2i0pZU$Fs7t>VxC*?nC58xXCFnkXr>Cp0iD1fNKhEz zCo0|h?HqOsHIDnrE?`x0xtefT!tD}T5a0AY3uhZE@E7nc74o-EY;X*#zS%PQ@V#&i z^bs&WcD}*JLR+P)ZRoZzAFbu181(@ixsmJ=m;Rx*!NrVndcl2V!v!VL1;z9ibcQ;> zIMFz+`v_CXY#tvkfbQDfKUKb6FJSXio@DqHsn`yuQr(}(4dd$zgu}zn@RCE~Yc^dw z>2lV?>J^&W5E76;f}&0nf_b@pZA}J042QuSMMlXk$M`{ap!xe03Am*_z zZiD$*2=GEfYs`%zum`ZLqc~sPjG~wZojZ!#j1@ql50Zmx?l!Zu%$s%(-TmycXl-84 zdw@uqgFGt4I#L~wi>~)o)Uplnf|hU{VtbeDfXEqk0C{8B0s4xAbGZW!p>+qw10`6^ z4s6j@BF3Pfd=4*fIR;Y|Jmm;(2(1QP5PCCLmgf+A%LhVeU(^}M5r>J!K^wt2Z;T_1 zDH04kH5me!w;B!TP_gO}sMKxoG*%>FuVIJ542;YI&X114Z%1fz$Xw9zcNPSLtBvzJ zS6IDal>N2&L=P0psn1c8we$#7gE(f{$9s>UD8xTS)cFj0Iy9*dy}VR@Oa*7vLw54$ z;db4MLT~|n-J@(5(VrMim_?BHs&}4Xpfl&4Ozq+;`t&&W8tr;TGUBr3)ybQmd=kr_=8S^51{>k3Th(^Nyh+Aur`Y`)C@f4yplm=e`wg9%stbbXrlqJ3I+|pQTI_SGdxO1Z@ngVq zucK3H$yd0qCEVX%(R?dG9C4H!bwJr5p``LMo=lw3a!6ZSvf?z#S>Ha2Q7ioU1h;!& z+-lrJ4FEF-O$N<#OdFO7ACDM|Q)5yXs!{1gz^`?oUX;+~>KHb?WT>#_;XYZ}Q*_%z zlY?qNShJD30kA}=PNG%1M2@;0^;%Sbd^Q^F%pO-k(4WxC-igib6TbYK+$`=O3zVw0 zQ1*f^AgioUc!{xhv$*fX+e_t%-+>7H^r~p?t2JwktyyDrabO#fgQz&P0Q!fIA~itt z8|4%7%+SJdXq6Bc_|TYcu@JyunAEI!&;jL3di|+TjQJt3907)?Fn36iLL8>e^w(U^ z_a9+?hO^nj@#R=Qjn{>6ji`9(_tYpPg4|ZYQ9voDg0p*h zS6-pK!Kg8QJEXuB$j=Xe-v8+d)~E1F9%}C86jU*62De@C#}!pN{{k{>^U4)Tqrn>E zF|o!ljG*LE2-xX=KzmVl zz7>b71n?B#A}h#})EY-&Ys4#6jeCu%@$9b(3D&#ao#`hAmcv_Gr}8z9w4nsnyp zD*#I{o>&PEt%A=#@RkhAnjXchaMS}jY!GEb4wZ|^eIKCJ!hBPu0z(F+;A4|+RdT?t zh5VVoe*}Y@1*Mo?-f+UHTp%G!B#pTp?#{mSk|`}M!lAs$!(xFi zYB0A^AHa^t#dov}sa#=xb;fZ&k$#-Z1qFYcNgURWkbqDl$!KFmkRbF}BjhIEnHbDG zd6d#l)4(~AP<5E=Q{hatUdQ9xlw--BLldw_V}m$EZUq`4_PgZ}4{ zMuC!1ik(Si%QriXsGFUth95SohXoAw1gx>RF`En(GeMfyyrFyv2&7BsJWBr%DN>+h z$*Z51<}j0PS}HeO$-q?T*zv2~xmW?@*M3c-g=*Y=YSqqxNRkK<+A%sYA2Drd!H{qj(5STij-%h#JRxDGs~u{PK|ySi!Yl z#H&bx@q=K8`3zeN<`+l67^Wl86j-zwK+TFrO?~5%sr)91;&}{h#I;_Bq#i30&hEe3 zF?D9qM)Nc*Ig1GHsn5ZlV1=-QD$H7B7%Mxbw!o+b1ve36Xa04)`pS7T3W;q&hom~Q3R*0-7uy58cpWTtWs|h|tMHrkH;9CJUxfB#Y^OoTSFTi#R!`u@J zmwXZsS&G%Y-ryiRp&pmCKPLw$%!DyK1>w=)?~jXj%o|!d_g>l13s~{)?!Ca37@9_E zC_>>5R8P-Wh@Ue@L#?^ztCcGDYaOZVD;c%ipKCF1Kb#arlaNieV*i@ZURke^+~z|9?Sf@~`dN6uU?>g^S*S>PUj%z6>T9?{>%EeGkQ!J@|Jh zQ!@Z%I*QtGox#|J%z6~mV{@w-*ZdHMO(wrAigD|yv6(#?SAepiLj`C#;RALJpdfGA z6qxcUX@zcf`hoo%;s>bWcmcD|`ssa?$M&>_?Z;inzeg;Bq7D=zj=Fxk8)q^%(i zHrO;LX#jW$Wnpcjp>r1z)|^^$$SPi?_vWSnHj3ah$IdCeAan-$J>FM{^T-43O)8MH z-|SEWL}8dk17SJ5u{S_=!~lr21K2_=L6Z_hO>9$(13ux9aCZy*>Lhm z6u_;{78qjkrRsrgIknm;f~*5ur@=H)YikCsuq0sTsdPHAI~Old0m8Fb6mLfi11dt_ zN(kgon+`B{`3M5aJh7?|E;!{|LTaXLe~1=O(5ZWjj(f%+9@Rih9QFd5s9}B7(;8?n zYnb)n=$<|ZW4@af+8gk@2?3LIF-w+Hvt1?5M(=?*YZQEO)<)R}@d zbdM9h*?qi)3>MnR3HkGn$Jy*d)Qki6&|%DCG}d@g=y=J?7J9Tr*r}DmpuR<)a{aVbHgQ@o_3Cs&dty)J!&vq zC>7`ORsg~B2u7d1a?;qLkbVTO8u1^FdaBEjl7~#qfz@N0V+23jVbMvv#GWUyEVC%O z#iE8rDFV43t_KAW(%BZ|z9_q3^=pTrAi-( z-80a*rLYQC#PvDNIjDjK%mSi_7_Q9aK)dna!W$N->?LxdN`r`Vwb z#j~ezo!V6bqmh+m;oZ935`}<$n1a^Tz2fUDTu;OkqCPWjYczb( zBBNy!D_UX+^jR+K`%2#N&p$fXvOeFJ|r|Hoqsgq*Ag;H4@PKwjc>vtt`$1boei<|)9* zRF7k4WvK%x1yNdKXrw@igl4m@CpF_8^1G(oZLMii%)2*FG?LWL)fIP>Lln^AF85kWW5VAYd8({Ew?vXhE;Ky;lGVc+IN zL=T!pIJl>XVY8CNGol(XexF_q6mQi}W^i)=#(=vpcSA4{{jD6=wEHfC(!8hr_j6&eG1Ro@i;&JZ8@@qcJ~SND~N*jr_uGLkn!B> zVpANGj}wNY>v1FnGCIwVqv_#u9CKB*5l#_6Rv7~g-eSgyQqqVW4$XLihz2MplGD&+ z9L17LH*Orw`835t6CUMcGHQ%a4s)HDJ+qTgQkpKvoD)}S9i0j#ysx5*ux|}es5FGe z1Mn-oS<%lY`S)(_6j@7|tqYd0_8GM4c!GBj8imM!;807=9U4S~9V>*Ndhxt6%#3nL zlPY9nB|XRp<7%xb0JJYk&fvL%hSkXx2zv(=T~jBffTymR?f?pK#*3nHgeF&yI$!iD z={tvB8p-hRgUbqu9B}P4?+)TghaMGy2FE{<;Azsb`;C0}a=GZ01V;Kj2(0vb5Ndyh zmQFmp*dw4Fe-HF#2r`q;%zCuWd%Em_Q~h9oz);~W<^V2+1R7)OFBl#J?Cik1G+%D@ zzI6Gp9(?f>bBj89tF0q#t&ntsX5e{G>6X;QDIqkt-?Y19z)7k@r7leh^5S}g3BM%Er zF5~%l+&m5mFtM;?ab@qNjMDU>;H@@2*ozN3X?8~k z@-?5;BTj?9&|>Ie%S7(MFX#IYILn9n%TB5YJ(8RuV0wF)(%c+gx_synbe5(buGwLD zgVV#>)~656Lq(66awljF^q@Re453`ZhtR0w5D^FTAp#I+`a_&qF2#DEhg_l8anLd) z|BP>unIEu0lXgfo_vZb4ZeaM>hiRLb-iPHt@55XdG*WRf*+X682C7@iwh+{D2EX4W zX!@;(L3{uHFXXXxO6aBvpH?wpdI^2fK0fxqZBe4p`Xrm~SN3tx5HAu;0SA{(No|~) zd;0b1D7xa@DvjtN-z`u#%C`mqVQVm6!)`NVdX^y~6MF zb5L>2Pq7#=uPP92q1z-#=pc1C{|Ya)s4K>22AK-F1mufLhh~f(x}e&PRSX^^Dv>`# zFEo7&dHmW(e+BcPro{bcL_im!;{D`&@%IO; zBD@j}ETlQKv}qth-0T|2SNioax9uZ^26qI@h~kn+f9oXmv}z$d5BcCxhzN4WMk?_u z5x&I=62V}+oO5_a3zSY-^rhLvVR|7kV1VLr1ldx^S6{&MzLxigExbOa&_at7#z>vM z6EhmV10xC-(%4!f!ZMc#L?0Su2`_QX)qR9h208Gr+#KjFh`iN#Y)DBU6mSmKvETEqR)L3@ci6kQ*kFJa_}FOaRhQ03@l75xS28sRL2&Un0Ls$g3zc425jjq5HH z?r_B+bUnRzBN)Z7bH>vo!!(YaQlwQ&$bxqv%(x5547&uAf&eOY#x5Qd1498ZRTQf>`e!RknH$?D1Gr)(?BD ztC*>G$_mJC;vg78vGcvyEucuYEl+~&C-MxeK8B#yFD>!rO;0Yx-g-^lG4)4WjqC0W zN&_?|(1W;GHMhPsA3-f2?(XD7iO16eg}}Cz*-wn=L)myXj^1N61SkzU;tTzv8Zf#ZYnpM)fWWGl1JTpK3&nyfVts&_s_76;=ewJ+d546vb&`(7r8%QW(6(mF12` zhBS-73sU>Z##QnoL>LclOXx!`J~76od_DhLgaBE6gc>OnB)KVxwhx1jM;`=s7GA;n z(53AP`rz&AYaaw#ls@RTR}z-<83Z-`()D2|T_5Dq^`TL^J{YCzgHXCY=tHk0xmA3J zm6dzGTW_%A8yqxd1PofJwK;U`o)2$K=_-<=@27WYn^#b#fcnSx-x*AcAcw*b$PqS@ zLmXQUiBqg-d;;1yE@dShLX$Nx&DAz8Y->i-LrtDxen0F2Y3$~qhIblZN2oYz)1v1a z_{@R#b~Lc@a*s%s1KipnhosKO1>{M?7A~M^qkPkV>%-b$@>+V9@;QV9n6X8b4QBu` zae$(6s^;7jvoaBo?SNeh1*rsP9w)(6(nw;pPwM5yMC2Kag(0rUfhf=|q6-n8K;gbU zEW5f%^rb2V?dGMUd&n?KY1Xz>s+7!vBEv4klB9T2qKC56*9v4`g(uhwWVV#sv1KdN zqr^nQbrU^;Y?{6)Dw;CQE>7>?`0aG3RQFPBA z&=^OLoD+Bz#AhFO`EToSecJ5!;f&V=IPv8LP^{$t+F0@!`Hgv~ba4{M34A!~0m_v8 zS3Z(W;NO2GC+}Ei*u)3A`Y0*5-!t@=Ug_&9PhZ&G$8Y@f$ONw|8N?|2$6t|gE~r>_ zdZWqeEX{&~_ZEH2N<03#3~O&)P1{eGCHms-{`feGL0+`E?`G9fqWH~6>|(JCC|^Ol z$M^_~t=P>WFO;-pzOj78yoHY+Be?yLoI6kKHa704ya_U!kr%#~CSkat08poB?N4XC z0Kr=wvLT48dH~KAg5$#d8uCnq)5psTNS+0dnsAA^g~?fgkCNysY+K2lmZ?A=6XYus z=TxsSzh&LoqL8eOE}B%`b%~6dxh^@+c9sN|uO7~<`bVH`+1yaDGUfY5J%7f(Cclr^ z|DVn?+~}VAB*jJbl?(B8*T*FoTr+$TJVNIR5F8J2=X68}|8LHZ_{#$PgqIk=o>DQ( z^-uSSuMd+0*}5iv#P`lO>-k}Fl=_In=N}F*tvsy1!HER?xvm$7w4i&jp2yujQUJ{F zL1PlP9ft|7s4_^f^}P~8uBi(l4IN71lV4=J+LDeU=&F1`&1~ehER)mAONNECVq=0> z5OSu_d`wV%ZMTO|@~SDB^vYrgK6Z0u;@4}uE`NyjDJAVdS=Aw2Fo(COU!I^U1nl3LPIgXy0H}`VuY)-2Ir1UY2~vaDXLkA0p#EohA7+LDI#t zA`R(;T~Y=|yCvuSGks>^*#<;e<|aD(T2ZVinAW~*>7YBN6YwHtI?y$gb@L&=Y7`AI z=Be#NaZ`-*cxoy@ED*g~@wgeF*wxYtq`t9(u7C{7${b2`EQ)z6u8}U899J$?TCKhNXm$lDTn8fX&=0}B^#l&&2}o3cpoO#JcoSKQFIF$ zI5w)oMDsP+*{Agq*Vzpu1*1iyqQNn1?i3h)wxMcptfxI6^Q-e3oZ(8;in~N$fOk*% z6-6g*RXAGV$a(s<9;>u)Hc_Dc5<~-AgrBtrW-)Hu<1VlK>*MAw87-hQRA0es7XPqBf))9$+WPae8<6aHQ2* zlN?iwuId_yTTnub2Fl7tbM;Ydof9Z{PE%X0z3vZ~Sz8 z;`nQd+c~Uj#zkSfh|Auw9<~SVDL_^Xjl$3JoVHXXfwix$Z(&d(K*Ck zLd4oAzcra!U~mH2<-1S08%fVSg978L!=jLh=v9o>jb7H-tSMfzg!NIpHS?Htb2Dg=vIjo>+gIfM>t-fj1x+(&5^QQ@=s{kq1Sw$ZbyC@g;u z_wrC!^|LD$S9+KoD(rT(TC&iu*Ngq`u)95;i8(u?rjQMf4mcNlnfuW0(SQ>W?g2tT z;+uCUYT}J0n!%;_$ACBfAOjMO?mJdik;TMn--yl+nOz@@&edxZU?n=__J#2ca-lwk z-3;IJ9cuP(AEq4em}G|#pX==HEUnlF2beb%QOuh-M3_tpYZUX5!jMYY0c=_BccC#qR5Pl6PYWrihgdQ-zmAC&{1`7nGwUY{_3B33&h?xO7c?G}Ptm z`O%=g8j%7xah%6TwyDMY*N$L+p$`)sbDz9V+wv+!G{W*Uaj${75!4{+(D57 z7PY$(VBE|3j?;A5(Xp=5e%f*F;SL?Z*#`_O4XW&j)>{XU{?bC``jYZuy@MKDFf8(? z!3SF5+s)ORc0sI3>=KeDpy7D9iu5nGhb|!efOmo6_PYX8+8@q1&z|oe?~l8WuyOhH zc-C`a4$eNB@Wq4eGUD5qbnO`z=i?Rc$z3rmq#Aoyx98j4_VEsmQ7Z|D@-L7qxD<~h z)y5k9Z;>a*Oo3>2fbpyu!+0BLc+Gk^=DQm>ptCkZ)}fPP$OLrI>^_XX#p)%Ds3XVQ zUYs;>PS*vu$3YjOVX)hVwq-+xUg!eL7bSBXpxGQM&^VebMmImseEC_zT#~}61~F~v zIf?_LPNA@E{Q(b`cnCC6ezb{Rf~A6x07eb)qFWO!zrxG##{+IJ8ekE!G%!^Wi(~^* zwYnhrIBQ5Gxo_fV8mr)%iRS*@U{OZv0W~nP1x<9rmj~p{wgJv-eOOGqp{EAH+{<7Q zt;p4eMlPiuoYf#PkkuIgQ6ys#@UW{nfDzym;QzJW>^?lQ2bjYEs1nV;4X7%BFHzSR z>DAr69t~K?u^|>N;^V;Fr}lG`I!_0@LI^MmIRf^S!#dwN-ejWST{HTHKIb%ZV@$z$ zL~?H~Hn#Tvf-0j1*CgMJ>i{2G3aUL~r!YC18a{J;0j9mEVAwVm6%8_O!R8Z8!Xy}V z@p^zW<*e#LuH)$hjSLjii#3*m*VrZsl1+CKnQ!v73HWg|Y{>vMYolmwttybb$%+TN zBevBZ2sm+)zUC^F%o^Mv*zZScqewYcN44`kz`-fzgwq`k?rR`(3MT?5sk{r@(}0L# zRYZ=;K72CQPk|2|M@S@8dmk${ zCsXY%t1v0!)abz)Jd`SA&4rYs9x!!ZD{0ne1hp#Zqfx@YiL#ut-NB|TbxX-Ik#p2E zL4gf*e^ea$^CS+VC3)>r$>A*WM8=Yc%$HnY>(_2enNlF70&=0mDHlck^N+uu&5obe zp2RW(@?r^3YS=i)W5XM%;Yj5Gzu^%4JHTB(jfW=hUOxZ+Pe1(e-Rc1D56;ZtA4S0L zzW>t@NXqwHtj0syJ~-GYTPk8uoY9s82TiPtv?PM$CPd0P_y#YJ|2oP8*NrAm&bR1| z==u}b7QD7xE)H;ttyMS0_fY#&NgU0l?nw0Njwv4h+w^*AxrQ2v03o9XU@*B@Yu^Gk__B!x$+2 zn=v(fD_61(UqTGeM=J5YGdj#L@_`}R#8heCq@{XGkgW9u96{11TPnbeL9_XMOCP~^ z36dx3v(e#IfxlW!D$g&f+P{hUG(*&A@nCh6*-PHi*3UFUy8{2LT)cC){>dW~Y(x+h z?dLF^4+sYtlEVVaU6$c64a*Cga-)K6Q1)&-7UC(F^i?>uuV9plxxJd{!B zYmxh@`f==O13!Izn$WWBgLA>+R4AVJ`b0H;A{V6gWluW6t0`oKfUFxxOuKHq&1p1L zgN?eyd6dCYyQ?G_JKF z7-CP8q!+es!k8;{*m!xs!UeiuMV);Q1hEX&B~bg@c)}`nGo`NQ9^`2WN!`j4h@y>^M?Q;_cI^6kegJDdVJX2UAS)6h9nN~KVkL0*A;c?Zo zABL|R+|^zo(=G-1Y#N3(iRLh`kR(>$tC@wd#TZJNS4tWWnVaQg{SW$GMYgcrBfsNepbbu{< z2#OaqYW}fdF$c6KHL)*Xc7>TZry~Ij82X1Ni`&3@i$YRv?Z%}cj2yw`@2j%`&IWWd zHitVbGx`WKL_DLM+)Y$_9JC!I{Al33zg#UFfM!GpSzEX#L_^5$Sv#x&hK_0jxdShR zQ%M8iDHU7_=V=3FcB2SZWE8PbHoYu*QuqeDUwxpLzS9IO0jAbz0xd76(RZ$CUJW## z#&IRzc+2j&rCDwD>%gHGYGpVLHAzvRCU)6q=|bfb3_W+5n_X}ro=**Z^CXM(_=2vX zaLc+Mhgf`%8^pIJfjDkF%o^-4#6xO#Qu7B2yqlDF~Y@C@wLPG#}N3n#C(nhkzHgAF@r zFa-*uoQM%TS$=)7I)Gz{ zX9mS-`^7={OPzm}0R8$wPY^0AsIETjw>LX^L%G@}iqrN43RxPWfPYGmaqf(vWBdAwKS8=!_;>9ZiS0t?okOu6Jit17);{m`IYv<3EIN} zM20n)V>?$VGt5tC*tI6lgF9#GBESa?ohIhiUZUEB-fwX`Qb1UVlUPo*MO!VEEX2e_b~eLP$&_sWNzW^y&}Y7 zg#??5MRGidSkR#bMtjhDaURd{Lg%)GFg&DxgxnzzLW%OG2dgukZy5MZr%;Du62HaJ z#CiLI^2aEt#Ix__7=s0__7fM2)jepzRmH;x1+*!lY>=R(fZQ&l0ELc$Xs13A-D{j`MZL@%I?c;W*d zY=gfW7ePAq=ZCjAh*@rY4?UWUH(}mAM+$5~2vXp}-6)`Cbwnc?ihFmwta*SZiyR8& z3QC*X3mBSfiGkE8R!f1n()2(*rL>Y#7AlIF{W+KQ`h*9{2(p7<5$g|0)j%Y#w>HJQj{#Op?`IRaY40HEBT*5X~m2SaAN#JjGM2+{EW831mf81@mPjYu6^QAWJm>+QCapMkW}qifE%&6O?g^V~?TCX$Z|{)mXG3oUvRHR<`pNn zdqr$noQi;-naI^>V9N0`Y?P-5>9qwGOd(Z>A0rxXGfm)B`^W>g8k{?lB8v>L>Uax| zj<-of%{q3{#W%(vMgM&DHweilMVIk7H*b@Wh+$JY!WSjPEde-a(XLo;SrIQnUzCTw znbw8Bf?OdK?5(>T3D8y{zR4VY%FS4`nZ`iCJZ(yL0WEQhdjd)mhs;Wxkt+T{HJ5=B z-qb)#1YlFce9JDt*>WC-IAa7{yVUq21!qW8l#gmQUVQ877?@J@0mfCOEVSGfN18<+ zaI>r5vBd&pjaV!iFz#Hid&c-0)9bBR?J_G8J z8WD7Hgv=yn${Y`MO9)J<^#H>ndgg0>1U;9QAv9!EE#YkEj%GHPJsJf}oMBrPV?+l|o5 zH>0t^q2Y+it8_H{N{e6qEGY5jhS;T4-sT#BZ$LX zgSW^rAtdWUBqHvDW|mH78tIrm+)FT9vqO)zb}aBHyBHCv+G+t1>kOtVqOv-S@GUq*dP<6D$nqm5zMXts#Cg)r zpu|qpH^`LGMvWj=Vu+g~qK~=P1EM2AvVey?TTS57a=E($>!e$ope@f@(u_V}@7RFv zcCa{WDRsBj0`gU#Oclq7h;mW$lhXO6-9AEj07?Xhc7!3l#YOA1)$J{Vv3FsL2ZvPP_m5oFw!>qsNvsJhzqMjqf^9GWrS>t{(cS$l6)=lG zysN!V*NFR9V?$X7N2&DmvX-z$-nQLig-aSi})ox;gJwT!3H~%^UbJ%+*!|YYRCikgC!7CIy2y z7a#E=>)r0lssp;>-dhORaKUk^Co()QFHa}ra&g@Hd_dT^-Vn_70@+_a+n z9XQfQ%Igx6jfhYCf!n)M+{|&Qt2h1hpqpj~@1()J0?v=rm>CtEFL(m&gZuFpy9aO* z6)LVyOmb?DRh%;p1;PrB=a^c6ZoMnO3133tS2y!6v^{WZT|40X=*7hM;87v!P^zZT zbKakSWQ;Yfv9h>ut9!noH7nj7y*u7V*uC2Tpr2f^Q15{&WXR*Oo}NPxujF_pJ->>B zH?5NB*i+wa<6z?|(zp32!#+2#O*Y_xL5!+)Y#cM36H@i%acB7tLjEz|H z%=8whnkR?IA!!8_>zj~0Efg~%bk&|qFs=vV8Qp~3`i?H6O6QSK@-in?q76x=%E6Oy zr^wj-e2;0CF?9x{Nc#eban^#k;)X;b)6G`VN?4%29 z`lXoa9M-FP%g+7VMwb+)|Abq+e?YW>>#ahGVG?PkSoa#UW-Vp07xXaEt34=d=rKr3 zjW#FNV;qz0a4!LMW!em|Bw+%k-{OfxjxFE=<&iDm<~;5oaB;$I5S1?wEDG3cuuAH@ zv}GvWSuVJmQb`i0S3K7V3@e4CW;H>B!}10H;Ff0{m^LT>+?^6ic7-%zsN`2Gz!bn2F4 z{I}-wFOTzI_;5ScTheAHg2C2zv)q5i#v{tOux1G@VNTtOHdMC3qa_6IvUw9mh8*l( zUUg5vnv}4(hNKM^g4*i|g4Zr+9_cc-fl_Olj373Yx`X2lY*h=Qo+Abez@cpio% z43ehzU~%U*Rm@ZI5J7Uj=OQ6rYrU9B#*zPrx_5!i^E&T5&qsxb+F}|^y3=5rod&bP zHrND6fo69Cbbv9CVq0vBZLnJ)#U_A*?Eo#d#d@&&|2@z9eCNFH_mQGxx7bZAe(!s( z&w0*sKbQA7J8e;~Y;djmkmGL=Noy)q_cJQd4>5tI-Li+OGmNHpB?Y~(Tf6wdog}{= ztMj_c;$NLt`J?RA>AXV%CfCH0hQ3Y?1kpRkZMaTBLE3q);su>|E$_37osVfdz{d&e zb>2ESN@~O+hh9o=dv(vZf03*Dh76yS>*RJ8>N+V;9@Z{VHYv~)JJLHZ`OK#FES=G3 zeuM+v+hS#zMLAdz3l+=7fo*@f%!&~IEK|VucAX2N6+yI9&sOk&)HvSx)-x{v{nvK_Fl)fh2eM9g2@ww zi7)ELvNO8I$6K`Xo0W`rmZyY}ELIc$<|L}yO(R}!pBzGbxXv4g%VsQsRej*0g6`vNqtP0Z+YnBGQh}0^vuYp%pGbR+U}SumhZ=lJgwbD*wr{k zU+Tz>RQz+cNYX&XFa9kdhp0>-K6p~QzhsG5?yfiHXFJLrvAL5f@>n%lMHs6$a3Nw- z%sh{zd_Q00X&J(|!&tc2%gbG16PP*c1hb2*qintEf}%{&N^se0=heh?=P(2Wqi)oT z_JU9K-2FU78MdEj$7Hm5^NoOu9u3)wwZo}xP0-2ivlo*##~LrQl>LNu^6A?u@kBe) zN|p*q#k0;O9Gg9-q9#tNEm2hff<-2sFJrYqQ%gW!?9Yh064?f9Md-$SZKD!@Vv79f z^W3iBkE{Yz1@Xg|WckInz38N=R^YW^i**sgJa&JY!kd=tT9`HZWC80=xShjgQp1*0 zpOPZrXBOt;ItiYPR^D++f#dEc3s#Ob!6+=}Cti%?Hmvg=(d=!=4 zbWTolyoN;(@3XpC#TK5bmBC0qzvo~%u@%oXtF7bK(yM{lItwWCnXeou1+4XbB08{L z@S0rXP z0@za(g!Tk_s3j;`FQ&|;^{t&H0HkGN&ALx|iBfbDr4EDrcp-x|k9dzWTGPj+DiN(( z+12NfI{9>mkh3f<+KP%a)H6eORj8Qjnl~}M*v6YTuBI6~ zr(Wf|$SPBw<YOm9$SX%kGV=-nC?on^UX6#Il$X ziTQKdHoR%RTOOH+DZewdDlPGO@Obqs?caIkI0pV&qm@lvCp26B&Iy$6Uf!usm>Evb+qvv)S_@#;xRiAP?WML0iXTUEwuem>QKd8N_JY5_%T7}gXtvuX9YXm6|a?GtflC%!I9@Xbq{KL&Pknv=+v$ypi#BL zX_=x|Kg6wd87v_gT9$sS{yH0{ZY{IMAC^)b!L?`KQ5D!Za9FOENA5KA8RzASX{zbs zj>Sl6nnT5f%VvC;6qu^+!K^oS#%{8ShGr_OCElS7%}gnHICNM~sNcd|3rOfFtKm>blTQa@X*pyusHsxX9h7s|pXF zDn=a{csOU``fIsh=X6d{cSoH#e8g_wfy9nfW4oy5W1lyIk}fqN$gi^+Pv*b!pgSI% z?#}wJt`2)lk3wyYoG`0|uG8npe7q`q@QelG4$AvHt}R&BO*8Fmqm1G&^-4;pd`7mX zb=rbJ51#3~B4UbH&lO^-i&`4xdSs}ZoO+>Ce)h69e+u;7y8G;@WA;c8(}IzmC}RX4 z8>ti&#WqqEJUgq6U)>o86+SU1GPnEU#mi!X7q!8ku+`xUx)tF?n+-eG%uOQxpxIC{ z4lMio>GFjIc~91X#PjB5`m6hu{tUw8>&OJux2R54`RC4_tseCm58bI_yDdDg<1YGZ zwLal5FX)R-C~EC6se{wIpqijk+>0C8P~M)gx;1 zoZr23_!Pdt1&+5>nL1p0nzZWG+9}@8d23*F_R{faI37KP%o$FKiAr@??nToAT*~ms zm1G;0^-CF@S4(@(YbVeZNv0~0$*e!AqZuS>9fqG-Z4c&0C+yDi@Z_QLGn1-{@OeIX)Vx=8+MQolq!>*u3zr%5^iFQR5x}N1>{tt) zdP5fT^v9z%JjBmFaZE)ZJaJvEF;vQ)o4?PUjbHBJ@Mj&4uAUCVd5PPJwEQ|&@1DVBWSNh@y;Ca*?8pa(JO`;dw7mFzD8jF;-fi)_8fwicuYs?xe^rSp6w5}$qU*zvRHtu?XP zsabKjw_F|9%1bFEyC)(7lnsNEK$_49Mf#~D1LQE_qbiGFudpd)aN+_<;wif=kmn=C zv&GmwAWYU7aeDc7nZ%w)MbnJkZE2DqyBCx1 zyS({k-pxTEL~b5}o&#w#WhdY|^FyYo&b?Z3QyfAe8trKOJP{VA4-!}+o7xtyJ;;ib zyV0F`Ju@tL+bmrj4e}YV`Z^p_T@8DMjV*#q8j!2ExJztSu?k)NcSfI4Py&lfW>fNY z1reM!dK}?vB3BZo(5|!RkTfSx>uap3_>ikC7NXwy0Hbb*ZX{Sx1&Ta;PPcv(B_(jA zNIM^St)y0wpbg+>j?Gf4l6Q*i`FTW4aRCBUOXVwm=SE@3OC)*G0WljL6^hTy`r;3< z%!6E4R%Cc9NOVc-3`|j?lEQ+pNK^$KRqE`bE^;hlS4BUHWba3gWs&CVn04!4-N?H> z>#bz?jV3GH%xM|%?0K*Rb;)tk6J+R5q*a!(oUkgZmJlb_J)82oB;Zcyyqh)CdEu;s zrS8)Ole!G;lpl&qGu1t<)_pt!Ks@`^RPlyl4bxqpXNlyw=R1$al=4_BpUa5tuE3cv%Nv z8>xnxYMVh+7P5OKW67}_A&U9Y)y}Jjh~2cwg^WRCg-GY7nc`?%cZyp4inuT) zQ=}h0m*42sY>sLT-=9r)_@j0X1fOD>q?yNAne{vkD8FP8;+e;+IPEL`b@+%5URR7< zy;PT;L|%NKtW%hfN9RQwrZ7^ffO#jGZ+-Mi>l8Q=%}X=w`JA@E0R~4n&nUp-Z!;2Y z$7$asS6pOfz;<4k>&^>jwK^{ii#IGMvDQ=^IQOfVI&U*GcC~)hU+3ktnRq5*eZ_6& zxW81a60czN$ykIjDD&IQ1vU#FJnt1LS)DI2sTf+R8k+Q+F2B&BRSWmjzEdh&&^WtO zVui!*kz zj?2>Nyx?-w)HRG@Kb6wXT^iq6!5pQ|>iwun9#QHUwRBQ-FR6XnI%#RDb<#($ zSE)yoPXAX_XP>q8oKjDvIYD#YAb(!@(dP5Y1DfcKx`B_3Z*Wv$Q1C4V$E3A#(%_=U zlj)zUzoSX;?RZSJE~=IDHp6E+{n0P@xuo)^^rZc*de)VqnqytCt=~(U{S_o@VSpI1AVRsNzqfhDkfR(Tf_vj`d> zyI_T8wDimvAISX&Ho*d;iawilrl|MQTn)lH-NcBRE!JE5p!zs0=(H3hm}mjmGo?lU zK4#|csKY!ntzQLogbApF9Po5OZ5&H4D)pGKA9OaUGKVeita6U19JF4|@PWA+J|?Xt zX1qzaj!)-^pfu;ag37k|oOpW1-_sQjKBIOYPQR4W*=Dc3d&`{Y?PkiJR4WgwwZPEg zaKZa&Rg_Eew^y^~dwEgm4pX5nR+DRiu zCMi&RS`!43(s{j~5RX|JaQE#S3J`xIrSvf8^z)C12hw4m+#Az9VcOjMz=J78+;>=7jn;Aa(IxIX?tkwSC z_UTdkfomXaSC^i?tHX)tvt0reF4Zl%MR~|X8=f1@`GHx7i4_ssj1X@HwMTM5L>14c41Y{++1fk zUfPF@fIFhP(1oMUhrpofLku(>Q#o>ZN6DYp6GJ?%r?aA42j-`ijc+VPs9PR zV>9uFNC=&DLH1i3*ruFT`>VYGbj0sggP9ba5nP%&1C)Haw;JT**3I)qRdf#nq3*m! zlybvnufW1|J=!o13zasrN43K=M81}$AVv=I9!ffGgUv%k6~k6Aw;37-_p7%PGM4Mc z9^-3H57b-A)JgRN3~o4|5;sWdJu|KMb7{BIF;RW2A&s*Uk>zAicN2n;t3FwkG=88r zv`b56^g-`>y+#@RLNq2rY(mcy9#NCr$C0`7GT1= z!8(~-54hL^2at1WeQEmS z)CSXt5kdOco>17J`6-hD`KFIWmDM5ygN zT`*+oSIKqMK?I=ki=#I(O)*Sf>Ka@jNypziC5-$X!Q$!0~nI&PABxx@6Hve1+pe0oF)#SnjD@H`ctL4HX2wwE=`JYOIRu8At|<8PY6E7Ukzh;f zay@&$bGIS@dsX(3dY{w3gR-UeEA3PIw?C!Z_bTNHaU*Yyya{T}Db;iKsmv1^*R(|c z9(k?1)#I$*9hB@FKPngyU19Y|{A_{qG2SsgG95H$GTjDkUl1OV5#XyspD%$q z3=yZ8QU`xp(CoKa%^JKkPu$EY>BXPHAoGfG)9kmTsaE?pAn3Bo(pYfD%Qh?l7d#av z#Ghf`<#pwTfNNJbVzAEYL)w>Jlvmv&CX1_@l=96oLq$bWxxKpxQKBVO^` zU*-6Y#4VKwkZ|TW~N%(87)f56-JaPsi$luZA9=y zaAmG)F)abZew9~X-UQAfFl>lkr#o<^Wx!RooHin6qMr_22NuUoSsO8hg@_pB-y(2+ z?8dlSs?~IN31hR*4$OBtw<0>ilqRf+>3vo(raQasn$lNFn}ZUdMuhws2{}fE*foWD zJCx!UtqZ7}nOgEj!Jf=HQc)7>N^?cU)cO0itx1(`Xu5=;2W?AjKRy;B$@C-MV^+(-Z~p)9p3q`q+lOWa@>mOZBl zXpSBTeq+LvGm|zvYp|91ssCB2{jwC0<*{I%)!sMl(>oI9T)pizIXw-R?WJ{fgD!1y zvx<;NnD$^TZ7gY^!!s6egjbzTN`pWF$E_KU(`wH{x^v=YWDRR| zR)JGr;z(QY50O=o{yB~FnEiuS;p)@sC2it2w0bU+?pdl2mv5nH)7D;PafI+jb8J&G zX;&`Ud$iF03mO+=c9+V1up%~hV7YBTKiM~g-r+9CW=PECLqtHH=#UznkFK=`?Er596NFz{==H74iARav`X#BYmhSzq5G0uXx^3JU`HRez2(f zV9IqL6#Zw|%JSCEMu-1FmEq|_MJx9^WW%K2r)L{i=Pi%m{$gbJ`^Y+_GG6YlwVdI* zzku(4VKQL7KN+l@mJBnUH>=-yvk`XQ>h;PN8D(n~<1x6lBZJ&sXF-jHu%{e#RTZu+5e8IZ4R zpad~)+*fw-UROFeJI7_rOez9V#xrnp~*&U|FWQV*xzKBWhN)3Ys z74Lst=wf_EJdWrmwBrLNW{Nq9Dc~q|b1O`XsfrPsJ2S#zU=qp!HWlYNwe3+__FoWk zDV>GqWFWek#6*@6q#h<2wDk>Gng7?rQtASl9dm*d|*m|6paNq^h_ zOP<3z$>)_&EPfA3;=u)j_)PzQmcjOcTD)F};*8`gBe*D}9}+oW&m*xIi%&NbjKoFW zVu6E1%BAT#R;CnSbSr#TwVljB?NMtlc$PLE(?nxUrfv8aY}=q-=H2d%9EgY1uZ6Q` z>fGd{S>hhQii!2*k7$c=vlj}Mn5BR z0ZR{wQ0}M2P18bocN{uBbwJ~NQIM58^!DqG>3|@@oe9g?LmKS)f)zq)K$0hHvYhZm z80}ZQ=}!nn2q44}6UAVgt7*PTt{MIGIO2yj0G1*`2m^qw%FthcoRlSYf02uwg>CvF z{kvB{{6;!XuZN85ERL z9SeqVDICq}rZ17BT+nWd0|Bo?cB~Y?n;^ZCag}`@SdQR*cTp*Zj1+;Z=Fv4bOfr+I=?`+vAm_4?iwXHO(0?Cw+K z62A@>9EHsc`8Ed_W=SkT?G-YJK$PG|o)dSN#L(kQ@@_QjlJoY6V6lP9U53b(Y+>cS zdy5%+W#>8EQO9`(%5e|1F^`j`xUgdsiYWn`HJcJlg#c(qeiPz5D2yVwXpVT@TB+eDf({ZzIZ?033vXMEB{0Bf%WR;i@0` z4l(ghfyjdy(!5>f)*($V<@WZdU+4l@N~*x@0t!r?=*dUlO}=#w&3n437tSxK#-E$_ zsy&2nrk-6LBZl#&?Yk=B%;vvyGDdDtervM?D$qTMM$22-qyk?=jW7psZo-f<818d3 zD(}ZdDrYGT<27pRm=+F?s1?`9yEUWCacN3*)w!=;XIdfx?RZSAA3i{%m#y_0J{PVn z8YQ>aOU8&7#myq+7oR0JH+uKd13%k(l?O{$lsCc*<~X}B;F+Mt#(1?A?2KCT-3`5= z3hr}VgI0pdyZW9jxuaW>I#t(cbVlto{kNkXDwF+D1f*}SCR|C&ZW+4K;(Rfuw9uNk zjp^k)f}8Cva70hguiFsLO~(!Q*+canedj-U)X`Y)%)RHukZI-k0!r`2iJVXH zgL#qrwy|gZkLC7p2ZJ6$1&95EqlENAwp}TsHxK0cv&uiLd?at|tN~;BtjL_&$DWbh zzq4MC4S&n1wQjdsxS+DW0X$7JZ|F#(2|lkO^ULLYOmy&xl~2Gq7PGMQe=7qLY@OM( zT*t0k3qF~PnS!`q?-(=*G`EA81e_e-cdzqQ8Y;xfitL)7q)!eL5I3RD@4Oh z6Q+05$18B5u~QZDj+$SP?NxT_cDR1W%?u|1|MyE*n%2A_27EYa|?9Ou3 z(<0}ioiVw^ySM7CESFYAbS@3Y6H&Ufv3w(9N4zfG)+?15UK(xYr1rP-(07@@#B?Vt zl--x+lt#1@-VAWJX^8*=)2GKpju07Bf~-HJv?GPM{fKI@I|@$~LlUPjoSp0 zxq`ddA%zY?>^8L&hoHzDU(G6nW*dI>~5t=qxH#-@%mvUkJLb?Zl~j6Lbor}Jc4PB zE9|^%-RHUmtoLPDd-=rCJD6uF>OQS+Olh@(ZOW;LoA%OWK;R}u_n5=jIIfnE{-r*V zmYkT=2z1RrZ5#nhdN#vcFX4*|jPpgc7^@cDOIKNA_3FR1Z}IjK;iU<>)Hqr%OrDQ!iNz>r}Z1LM=;K&PJYN3$hS zI$7qKw*UKb*riK*a|4ggBm5LWyUBEqP!P7fvjI%ti_)Mc3-kJLx-)y=38E=kD~8ESsVoX2k=R=&ZM)fQi{}HAl3Lct`dT6D_b0>u(u2&`{dAF)6S`UORMm6lv|qr9Omz z1B4Zp?UROXv=g?OZ)2eq-vxotX2JcuEbvk*;a3ul#A(NFW1JT3yDO7f*)oETRa z9(DnK%=Yv}3myUh3O9Komg0dqww}3tm=xnLuR=(xc4<50eoaXl7*5)sG{Af6AJ&tl z>fAB{TieU}lkQ3)P+snr$eK1E2y`5B{+zM*%ql%!q;Nqw7nH{)vQ+Hmd_twlU5;BcUbhf1QSun3Y*s>T zkds5fBIyU7R69-`ZjGR>eC;EAM#fGVLMkx_0u}TIh8RZ(k61(~%_g^6 z9;%Eg*5;XkQ=*zsP+E6C_K(#EIPhI>>ZLf?Gbxy7MH~6JT0^Ydogt!ZV7yVP@G$pi zPGWtZC}A%=v8MEYWS!%>5`<$BaW#mORG`<%KP&}YSdd)`n=L}6OG5+=aIqzut;&e7O^ zG*TZoF{3SgyXuH812T_ktos!oME|495hR4P>b4e0onO2WY+#J|BR6P$W&<$|{0nirHf_&UcHmO88#pU5 z**({OS)kiW%xcUGLxRy+3yPglusK4&1wk`N1N*WyB8#ra^iHJK=>a%Ou~k}#^bhI# zF#$xO&%C~@VYU2(?!%@_+3kq3dEwopyZJ9K2cGL)R=?pOOO9u6a%Y5 za;6P)n(XZ|qL1kBBl@eGGS_@mBza!%x()9mC4q$bTM9ckv@8=#@ek`VoJ{VRjW}%{ zJjNcvY1QfF-I0^W_7|Szq^rt9^YrT{X|_ zV~&O5XH#z$G?;UKrlg64%&BFMfub}@Sa?RQeqO&XXc*;L$;Xt2X34qT!99#yM>_@& zXmH-ggeATAlpzm%nN7N(SR?IaJ_mB$Z*cPrQ;QZn$mRZTWuDeHtkxB@o8uT+M^)Q( zT|?F1U~w}?Ly*15Pe{;VSw`!ZvjRhTTo7}hsY_F<)WCRHO{q;U%nDljjA?$qDGL^G z`atUYHbbbzZsTfS%N_gCZ&bUlmC_IneecRxjyS7uP%m(93XEcb{}Hu|DU=uQ;b!;{ zJCn&_ny&Qh^OjIhki{PBiAi(C$fWw}G1Ec+Ol(G>Opl3-KRg@92TX@jOWSfTO0%>H z!&b(_aHA}3zESDg9^X2hIKY@0<&6j3R06MOORkJR`|byKz}VgwyEV}I&4UzWJ=<*B z{&#L7ghFr1?ROhk-wSv1z?z?093XDaN;d+RMp(KFQRe&Yb_r!psrd6*1aqTS=MJb% zAJFktC^~G+qdE~I-(D`v+?{>s=}sR__|lf;l+s?o>2gL0sK#zWH|d;wTu{OP zPW3s+BU-+YsS~x(EKzUYXND612%XaK^u2d3;C$yZn%V;_gm?25HG+C$ub$HE9`R-P zTJ?L`x?#`r5UTK^@mnYlA62=R61|-FB~}*!-j+un`QS`=S(D$>mcVPAs0uDe6~@&& z8rPaUYvrEvUP{iDQb=Lc+l!Khy&Szt&GmnQvjBuB7zUy|_Fuf5zF=Vr;@Mc`rxchX z@Z{biA`bDE9rIissp1QCk%mUka^xZDbO-_ut+|o6Y_A@<&6Ak5Clh!=!$So7og5fq z*bLr&SRGE9kPh|^;e=}VJ0Y38#D!BwKH(6zEeL}=XQya$`{g8*#C2o1qSXczgIugO zS36Kpw%Z-LYmRr3cKhF-(xog8KB>{i%_jJFbuk;bj5RD@j0TVR_Pvz0W5lf{XW_Wq zy!F!Jy*3R8rvsE_Y_4}3G`D_}eSdE8zTb(tkl~5IV`sDn7Vq)qjfB>=#art(8d}vB zb~dkJ$vc0tqKTOhVk-m;ss!3$Rpyj&H9S$@n&%tQ;BvP~3Ez6OK;o-rbhv1Q-{w>T z9@lp4i4br>PbDPfF|b^Rx%Vv+h-c_7+%czo)Fiig+)Qn#3ZYNr!COp)OsBugUAmDAaXpifOcnAflE=Q%Z?3pUrdo z$%ZEAmWx?~atj&S|LD!?fR`B?n8{MhaZyTya+c34CJnahMs%(nlvc*8GoBnjzoh#2 z5>dW%tG#!}#Ak$aj}*A2fW(CMk$jC_KbNVVT25KnFlNRwW)~Z0SSLB=(u9B#(4!=B zu|*4~iajY{xel*u)VvM~wS@F`!?aaK#p{NFi{s1?z0~nyLkTOo>^cHE&O9M>HD!g! zctQxq-e)Knc$lVnqezBD*71&va$jNfp+`*3RU+zx5KU$F70U?a0*kMldVTLX*D2Sz zEErN*@04izh3*+ueHC6kqjIx~c!ytU3U+fZX?q^cazs-pq?=Im7G(jOIpXWQw`T({ z+$&G$g!?PA{Q!8lTuccRjMa|J%2JcEOr+~VtY>e<2j(}t$cDVBe>V}EA~&;7a< zJY?u`I>+yLnX4dlhevPdW<(^&Nl5BeAx!Nl2Rp*03=5>dNzq@NOm*h>A@|DfMhvCu-^GZwa@if`ym^n)W){+qAN9fEWAP@P z4p^F#?;%s%J&+p?VtpwwN2&uK+YD1I7Gm;%wc1t;?Vf!}2bZ+&-Tv-k9kYn$+e}$z zgMGaUCzM=kHf>kf7AvNlf@nR^KbbzOc9?+As_X|e1xV<;dnQB&fkO|x_<|sk8$B4& zR#^iBz>@}S82!3wqhH&C`#+?AJM`~<{oAR3AJ)GI^zRq-??G7~r8Si|Xatf&Ki#W`hpfJP;Tfu%>rZVz`-Jr!Y6j`$ zQY_ZX>-a=J=OZ~KUSnP&NagjDyfr9}Tt?|}kD$)7KFq___?4x*h6SMNKBQH#xgqtl z`Q(H8_YwVDr7QKHR@;(%x(bJTjGoq$z4t3^@Fk^bj_j9g zB|3aO#L91;5v*m*qYR@VvD0m301DNPH^mm7bk=8~@4YNPhtO@uX&2c5%kZru-E9T;A*4Js zi{*}nV+2m0XczC%&5?k)XHT2xX-chSZU?ume)WG3oDn`u-qYE$ox5lUrIN?$Vwm-C zbW0LCd%tOX$1U4VmRZ#EKKf5mK6U-9$C@)x{{j8|C z@~WF|OPb{ZEX~mA#oJ<*Fav-jpJsz@@Cjl(Ap@smNpUP;pXyvx9PzMb?Ne5lxLMWP z=N9j6soL+L$AgRam?3wV_iEPT^Bt~TW;K%7d0CC%f#tMU?tZQ6tt)Z=(UeZ&zXgBS zH=aZF@Y9U+AO08q3x|Hdyh}5WLNy7SB;Dtzk;NRvPW9bqNTO{kQ_bshIq3 zRh66=`Y~j?YXpc7z9j-0yT6?80k6;fp+uEkFp&z0RG(2k@bzXE{ zW~GaTve2p}L=J1KUsnviuvlG|>wOFM9zg|8i8SZ?Ft^FZ!&zbm9D=%ck#Q7k*4h*` zu*$O)lWu2U4f6zk8+oT6w|>iLSjcYVNS>Q)nbQj4io92E@#`YJb@VBgM{C1Jt;IYy z+Jv!SDv9~)b368*Z*-z2eYEqz@vBB|I+{*oBAKq zMOtx8e!C)_2P8{+Uxqnl(PCX@x$Y_9?|@e8IDr3raV)>QOtbamBgPZQY*i0zl$!Mk zVaPQf{7f#s+OaObj+D9u#djhOielzuyUZwdvrj>b-SV&J^e+vUwt;`_i&ps>Mz$H! zkvQ_1@0SCLfCrky0_^VF`LlP9d;e^munqgSFK&ONyQc(eKCp;C14a8ah}a=ER}*_8DU~~|jNU5@xAMtF+PPET>`W&soXcqB-XK z32SLiZO$l1Ee+4AokL3J<6%jAxGA+ur_7)hp6ItjE$bdtDlqwn$kN8g^?uM`0+t!e z1J3HpIjV`~J}ewQsu?+@Ibh+Uv${5-!Ra1#V;_F`{DzH@*0m zQ}8f6wG4vIs$Xp1v~QR4vj++tyC#XCSN5)4V__`i=(|Tn6qT?KodpK~T}aQg&gFLO zVNa_%Px?@F-WK9Fdq)fK9CL4;@>AUyKsF-zk()tfzH6dv!AsTGESLee7bHm)xoXOX z<+ZH3t5_{(Ejj5+I~j^5ts_Mqll*`_4~T}Ki-Stxn>0}1W0e$2gS%x#$jZ|1BcjVR z2n9%5>X-Uy5Fhi5{ZcCp?$Nu}r}g`U{+|Z-YGjJG=$CT?X%J6K(CHU?4!&jO59?4i zptc-C8$^eov@n%J?}WbXK4h=a%RkEdSA11Idl_iC+%B5icc-e}8f=vl3e^6Jo(n5; zja#O~*7%aMm!hu#XqXgN;94;o4^^!(W9A{;UeAr*EN|zd>Vx^YDO$R3DO$oJqQx2&Nq)Kx?|iy( z({6*d*?-#9o5qta^X%UG2i~$R?0PO;zH!ONY;I%oC-aYNJumKcoKA_Knf+3WN(FEq)7bWLz)l$${JJj^Ce_Ww&mWr&aJnXzl9aE>Dm~X->NR^ z$WcF}Md%8s`-JHu*X>{g8b2=&rj+?acKtkczIP99IH8*a{xy|YZujjB+^%5ojIwmkjcOHT zr|B7ol6HWk9#SCt%_ihu>@+tE}ZA_k9&2`%mG?pM{ji(QvzB`~`QbgxjO-9(x z9X_aoxgqR<;Pv(T#Q^)ty8~Evr%o1Fi!qtUB;COq_slPWE3Hk(q%Uv2y8B+D_4d0o z;NFCkg?PACvG3Y9{4yUN`Ym{_{pELO4sH%4qVCW>_k_g82_$S9Snh}|UyzrTSR7UEh9E5T z%KO}QQ!O8?`#b1o#}0lC_8C$IN#m=$+#wPS9DYwk&LN%ji7EY^5#+fxOpo>E?2q{M zh*pl{(E6mX=*qk#DKV`%l6zCdF}y_&FoJ%KSN3hm7sbkB+t0Q%`nU zkMg0iwwcn255m`FDP@r;y+m8p@}8we;V?%}V477!bOIDwGUMyL%q|Foj}mZO#9jdb zp_fdN2LzxV||P_+28h(Z8F|s6pweHugu_@!-suixMi3f@3Jn_QFa&mH@M|Wfx%3mZM;T@z&4iC6t(;8qyL~CQuZ4n!qsSl^tN$9Gn8k}}LJm4H%+K8?yND1u2 z|EQY`BbX>pw+p6C$g5|in0#v$CIB{T`eZXDHiy&~o0`i^jx(o`n16>TJuo9k%7qRT zI^hMzl7np}_H4dZ9TKPSRY*BC6b5pPWiNOelLmhD5FXE%1I#I$97|)?-p;z(smlns z8kquzA`3#5r%hQ$f`>X{2sQkt}AK6z*qhXRUBJh#g zUn<2eV7cd$4OT~W#EjXb2@&G1vI`{ir~d{3vFa96oz;|p=2pQ7NUqK~J967yUE)kNsqL!Ek{vtWpYLe$=N=7fidM;XX8e%Xq z4BKCM=O72x!j^i6AkAX&5)ANIM-0DYiRclw&D%<+HDm@ItH*Brz~*Ud9woj3t@m0r z5<(94QjodM&GhVEN0U|3MrX+KegXLsn;>mho~(@qE}J%N-mISOt}szZy-K{Ry|w?J($&na105rKu(Zn{WNGbpZ>fQpr1FOx=!lYxa!UH(@npYh%CaBH#QNFE(B;7deMW5j4{ATH^Et5r-%k!WI zw$tE!f>c`x20v8&?x=q6uYPw{zaOrCJt&?Af3bRh(0^AwUM&iwr|Kd0Qp_-qr3yv> zyM^I_Nf<2$=bHzy)01^8!|jkbdWs$5;vWmvtz;|?X1csuB?1_QD%L{Q5#i4laMC(| zyT9@N;dmdur1o-Yf6Jx)y;FK!eR(L2#ybu-3r6X|LxPgAz&Y$@^TT{7ohCl&BT0jP z@H<_pV;rILPjoQ*UoPGAKl?{k5N0*fBU>>SYk!s3q3>kc|)G0$$d+=$VLSMSngwTyNfP+W;e!uHHJy;7jYtV>B995 zseVxfn$d4UMohwTkeZ`{QVwQ5JA&1V_{H30=)OixpuvUvnHu=PY!Sa>aB=5eRt&5* z?XnyYQ9_!9dumK)Q*`vQwz|~~JJS3TAB4#^J(oMU!$Nec345<~wvPN;?R8G$dweX|r?H-7`KdgyV$L2E-Bp^yCSm{J-4?a=c7GB=Du-r zTBTqMG$sV-`o^_H-COOBMrJQHzz+K&lWyyQT?RvaBkPS@PUR(7bs)RH!v!USVQ>p> z0IXa`XNPLs-|xrqFqfA4;uc@!vM+9JVw*&d)s3Ij{$`$&UgHjbl0^xy zjeW(H65yRfJeMU@5GLNRiz`F|BmwC%EEZ;Bo>+2ZLsf_x)>&zrxEp#h>bfD0ROcJu zL4qDxr0piFH7}RQ7DVen%yqL)Zy|)!hv3Vwl=et#(W9olTLaNPUPNV%@A{IEFEoHb zpM_LhkewsBKoS89$1Ijmd5|$j7`l%}q&s8$)3rL--auAnyE@bnR8WpB$KRT3ifQ}4qPNdTLb$)MtrI18tZftaO#Byju+507a_Arw zX&v4=y`?*$At;Wx8!IDqe5ESt%*eV&6m-kXqXRr-F#DP)9wXpQb~Dn!d^i~i_?ucg#uho1Vx96bis{CZ;eLn z4yWCn@zt!K;c69k5cC@9k*a4TRGr_7Hl}k=H){pOL}H8|##{k?1r#K{9Q;{3LV`0qQ-fL8yr@IMu_K0clt!_4eEb^4V=!$TV84 zpY#Vp^_&%}Rc9$_n zPv3l7%Z5`&Z*cwcc7Fw44==aBZkk{;*~VKG>krpsHw5h6NA{y)$R%IR@QoR#^$t~_ zg%n$R_SWHZt8<48<|TOI&~n>%+FItAm(6M3>arj`nO!|xD=bAE0(XOB(JAx`I7f_aXhMRUaBQRCSNcx^xX<^5HK*Ars%E+jXrq-5N?{7-X4;1l2#b>u= zA2M4NP$ZFIhXYONM=o0Hkd!$m&4!hUti(Qc-y}xB$YYMM;}{Y4d%czVI%hi2%*9I2 z8>S)}g%+f}@*1zOU>#OXIY)%k5~wW!T)TI?&EjhfN@dQ`Z?jfCf&$fpVy5ud3F!xX6toFk<@3eCX3ssL z6l{B~qio1E{32GRZEdD;G>@e=4+d?0MuJs-N&xaKr=$Tox*%B%BdUa5jrqy&eN}d=2{^&6w-hEz%pO4$5V~fM= z6AKxY_1zvs`sY?kh?_7Tk^PtMg0N!W501UIgm zUS1pr%aM$W_r09j`YfI!I?QiYj#*tK(Bp1&xiajAqMM_BpC(H)+^2~P73O0Ox?@Pj zwykhGytW%XwsNck1=)GchLhiq5_>btAc7VrZbyf@i{?wjfkal-X~S=m*rt||8o<^X zMcCmG5*8w0mG1Io>DcHTwX&U~)+VABQ_uM0CONnMJl(jL};yREkj%aj&oA>C|p0t*WUtoh@3>2%b=8@CeoYlJjfvc1uK-rgBHJ#*t8 z>Y`zfu|68nDQ(IA?yT$6rZ&C#-kZvA$=(m&cx*Rj=p}nNa^oJB!?sKI(Z4OV?(*3R zO0RFQgbqKD(yl|I9|Uw*MhI2t2%5%yj3qvo1Lenud_hcyypJHDZ@oTnIL%{25b6nT zjeRBR<74lv5AMInqe&0=ej6A2H!;!&%2wEV?=pmNA)(Az==Pl$v4KUV)dQt~X5N-r zPa9V=)FwAJv0*a$!T3hH5ISWnC^L6K-9kV*xlf18vy-u#XKLjF14Zz0=iW-bv6sv# zq26|P9X7?)+YM=&+pPzuRO2HzSHpD$nnrc+hH7sFRqMg-k$|lm)l>UByW3yJh(31n zwQ8f9ZY~)+|7NXRdeT_Qd6uh>PwA`ybqK7vMs%)Cx;LbGI@uQ_VzUVvB-c~GPNyYk z1N|CQP%q=*Ar>Q|uce?%AKRwgb}XG|9ldyYLaH2$VvB~?V+(iY1h(U*VU8qXS=ifw zXn&8OMtb?_pj+&1+oz0=&^+1Jjzt0V|A{he+x|cItGg3+S_jrfWO86)PN*XSdAY|< zH_RlqHDZ1G<)tn{=!A&{?c{>|*l~hbEaTinc>VG~hD$ui@4@h$L{92#s)YFw4KY!O zDo}LF`XL^U$j7ztSUWHwSo{PNkg%#9^~D~WXN)vRabf+>J8f44*Zwtl!MB!m>k{9c z#?niG1f8*i68RMu4meG7?MT?7$TEg?vA{mYen}f_+^CmAW~BE2dMf}yqL3kE1{VDq z+Bw4pBVQhH;Lc0m7*K{&hji&WW;{=qWkM-k5PkV<&?ZQU^}!h%3u_{jF!VfFws2E5 zXQ$PUdvwqPy);F=o3uEvewYS=U_A~6>9LJcCCWIy%}=O$gn}<5a`CgNzYPeodP`h6 z>Ams(p?Uv>Bs+lUn#uOx>PDCcVA*f3sa5En<3gEC`2%le4%QbxFf zv9+*6-4SrGRgUo%T79;6tIS>OP042=Z=wCh8E(c`t~2K&SGUmiE{w{uwPqX0L3THM zTC#n=ei8l9ZGqK?xd;`g*m57s9kd&ea#Gv*aEp%3ae;7@|E1Kr6A8b#j!5_9{9WoJ zX1rUS>!6`7D)BYaviEeTmt*aR&!A!-F|rM@8fvqNhptgqS6gzGStUU_DZvY^J8?Mt zd~&GaatvuBwC+9UmB6$nLJu0zHY6ds33%$KZJP2!Qp2v+&-8#y%DW(t9sz~Q-pTcr zTtWGybn~Yr9rq}n9TyJH>aK#Eze}aKR&d6y!0b_WGuIAsDJGWgighO}e3CH;Ctu3t=d_O1gKtj)W7=hJ&}0jN&A_reURyVTAhjf1nxGvY2T z2jvRU0~&q06YL$-UP7?xGeJIA+3jcS_dKqgCk&_ct4^5(TG+3Ao;8!VO{*Wj;`C8_ z+O1Ze6a;BwoK+F7gDO#t&3Bp%hS*ctvhkpVz)*Qsud+JEdg?V z$vr(KfG80z#`?q#jVp%sD}~7GDVx_`B{24pYfx3Md@LUC9V^jFwttN+DSpZUiw$*} z1s$T$BXh8A_99DVv)`CH1Gkh)MTntFiC6h%d*2K~kC;GWY26;{gp@{`?2|S$Q#6Ge zrbQ^+ip%YkkiOE^)$h7Z!@d;;v9CLyZu2o=wqP1x>1@+V6HKz39^GQ6wR4X!1+Lgw z6l#IesEl4h5cQIVG0)@1)^y)eJ%Cl;&J`xR@UfvgHOcVs&Dd!N;d3U^MWn+Lxme=Z z(0)s9#DKZAw|mB0(?AxHU;4*9;`m2q1Pst6Sm3U#D8kmipcw(WFcA5A4#Gj=Z1f4S zF+!-5G7PKkGx03ZrA_eUxZsqq7%k@+LBM^oh+vr7-u2mSL=wU#ttrH|+6@sd+R!ay zl*(zOOiMTvDYxgAx=L?x;YqJg7{%>XZ5RLCmmJC`ZCz@nvvSl7UvLh}9(d&DXg#xt zTF((Dr$RSmTvVX+q0Ea$MIP_N_;jBPUl-FEHLPnsPA=Z38#%e}ve$EJ+Yfd5*StPk znGLKOct4o8+;`vxG3u)XJPt?cfK*T@Y%W5xGD)ds; zsI#xs$6W~B=AAL+tW(A*4VuFXLWPGQ$Jemk+zJP~AC3s11f@Bn0VDfJ3G@WLx+vk6 z9}mEVr)w(hu3n?cCx)Q>)VU-k6y&t15TzPQx4izOG&n-Rls&p{($c+jgqjE^W~@c~ zb)1wf;=kj6aZW5aVXokt`pS5#eJv-v+l^<|2mLP1b02ZZ7$Jz3zP+1S8?uP639;UY zzV{Q|K6OmaWZPDt31KiPrE_UpR}AzH`nKQSmT+}d!TdDLRGMgGRJ^fu$T<687ss?AQRElaoE zDYp};g$i9P{?T)R;hFHE>k&ob2uKdhNGB|a)8!9$g!tv9Q%WJ;6%prp?^<-|?96Yr zUc$-^Ef@iLy8!LZsK3&=@Q95T!}n!~!AwL@>Z7Z-2h+e(uv);Fcd10o1l{bn=Hz9V zdL1y~rf-Hd+V&;FQle8jU2rd}ciV0ac=Ru0o5d23PDgZ=b%7FNAt-!K+)N|-TP+%W zY?sYkuyqc?gBAA+VRT061`@N3JolDT<32g+;}$MeTXU@q8W{NQm->aK_MyvFVMeCg zpHUmoyl=k12c=glrHD#-DvG`?DJ2_Zl$6fhgytxB2~}~|2F%Q~d$xW80I3h2Lt<5} z>E1{5_Ui*lUb>+Lq+>TDdEs}yQF z1dnB^VJx^gSY^1aj=y|AkmHfL#ub55-BvnY{Z`yG)7@%aIfwkYVN3gF48K9kP!{*( z#OZLLg*Vve?4cSr2D&a=-du+$_`W#zat~6S_I%BdRm#PnOzr=Ms{!h_)h(wYWWx}$ z3Eh1W0u~BaF!+$YG=nRbbe4xqiH^;4#^SjZAYfQm^bgUM4#4`Q`s}T05KhERZm^Kh z^Bbo5&|oN{5av!!y%j}$&wX9hC0!tp1KI?hi!bdc%Hpwb?5#d26 zuAE^^#HkkS6hbfIuD2M9GnYqQq}pxkc^*sHVqBuOgTz0ewGa%rS}xLEw4#a_hYO9e z6?np(tpY0tV#GP}^A1|GJBs!S9_XG~hQl6~;^2!BEG~je4^6o7tQ}h$h-~5v=Np|; z&+k*AKJy1Uz-`7B1_Hql7J-RQdYsZ}AB@G4b6Qi3z5Q>TWXl5eQ;hXcHE7S05t4ua zvfYZr!y_mMiPhgr-d`|_FHT6J58QiYSbp7)oTPvGPT>o9Xuqy+mhK;@)&GVM2$61w z`}AqLZp%~YB-WY8Vv?g@54x+?>=VKi)=W$UlLa}tZXrEdb24!vjNZFNxGcku)a_9S z*-49O=VMH+r@}VNOd&Q}M~o#%QSaN?9}{Hb8Z+L!HOC-O(Q5hxsdy4-##ogM_6kyW zYawt^dLnFBVxG+>)MsMFA_JTG+plx`{rbr9z%N)U{BaibDcx>*AA#>n! z=jLodx_EXo341?p4)I%x-0b&pDh{YoRSHdZY8rV52UjpjMxKIH0v7_HRt7+%i{7 z9}L5ao963l;?Gtl*R%4X4(cx2#_IjUH{V+}q|%;S?e|$*recSL;^p_;2!{Qd7i6YZ zn71#d$70EB>y6qDvmpnxp4u|O*^#YHF8OxzB zUw%b)AUE`_kB=?YZ+)i(6w7!woepHS$cOvj z?E#QZjR(AsY)bhBSe z4=#FAaJ#CdUN-L++wvRcF)l#RC*RTYu&-apL6{Ic;Uj`!cpK#{RsQs?^^EaP+u%87 zJC-bgA6`iJ<+e+ikiAZ12`-0A2XXsom@MR6#CYH3i?vM-*e)!yddC0xIv6I+X+05x zVWcPn|2Ctd3IiVzjA`>?Ek#f^&Bit4ehGOQd`2ky7ie(@Xlcs&D^FxXT+^dxB`n$7$VOtjr zt>J)xueYYHi(w&3-P3^%thwpvklFWiN0Alf7}Kgp4AVM&)vxikulG7N>s6%PF z-^MB;>kL@dAr_q6I=lN1^d|T^nY*WRMOg5l=Ax~AF1J>W-(xC>S1jo68-Y;pPYBA` zI}oFAEJc(W4-L;7_0PE2gU~v%oE}R7=_UuJLHCwH+JxK@YM-ry&SyKH=_PgXQQf$Y zh-~-`Y4|_Bve9}bkD;7bgic;#a}is|3Vxr4<6EX6Bu(W z1bm)_R>vo6w!jF>Iuffl1KK_TdQpxg$nAA8>N^1W9-p#at#$+b%FO^hEs8v+U0=|# z)7`cuZ@FD2j&F~da|62!{PRsUqmJP{7MDhj$!w8Yz9Pk-*9i2#Pipg9kmX|M_?jCJTsZih4FrK= z&t+C6fb78)AByib4eLCV0Lr-cMh$u>h0|ji2<)1PH?5gcUD!k}=;)Nxr5|8~r6lI= z*=?dJ+ij@LSYs$vsDfV#1<_w~*K_o#PXJAjADhdtZ9gS=u<4IsBi=zldrtpMU;gdgci%boA3xid z`n5k~#bm2BG@w7D8+q*G&xpNm9hmHEjrj9ZD=E>QAKEz9{%UKi{X5me^?T#t<9e9i z)*5~7UMi2Bro!0#^x$OQ$jDgxb#hOu;@e(K59+*+%0E-Fw^vN24S+LF%8y9V`AEy$ zkOn5x*!)+kdh_3*gg}`8VfC43OvT?Ni z{l1a0g|~S9ZmaXEG4yRn0=_k|AsKo$q*bapV1>Q;(RssyTAlwLS{>*cA77iB@s}TY zo8vYx0Qe3?eio@Kt^7DYKWf>}&-~|4TH|U{APEY~^xr?>eX>umftS{hr~XW-#dwt2 za$tEXMi#GC_q+~G_K%E=Yl76;xX;??D~E?Sj$QjqOJiEq8omCu0MOe+zyFTCtl{f@ zY+-AKhcBJuL4&ggh~SIwEk-$FSg8=sl0vo-e0Xr%l;wL}=N{z2LI2rtohr}p=Ro>%`~SR6aOMo)j*H+FUH z*ei3iAo}^zS{_6{Us_A<-}jBpe_Q_`z2gI-jjH$doCo4uPgH;7uhQ=dJ)IJWgwFXied*$WT;?k;i|LWF={*A9#-MS<7 ztsEH~>>GP+d;&6@|7PE~sk<=VeeiqK9Kar7Wf(#opUL6Ix1zwz~sn4p{u z>AeAH0552*>WabE#P~`f>)Nl5uNz#kTEDA>^1qU}{Oh53*fhAJD(=nOoQ#b3F_9*M zjQ9VfHPW}TuRo>L`Zv_Ka`j5>w{QP-^)t*o{~3_~{NO;X8KwWU;`5QBIi(E`t_V0M z##c`c4ypFUI7yvhOymMXf?owHNL4}eH`@Mj-yN;KJD}iKh76zZP5URBfk8;25+)tm zWX{_^85-;#nn3OX^mmbadO)1G0IYf+A0J4qq4h(9sb7DGhNye>Pe;@)2z2a80N9H- zs?YM@TD!j0e@9v`n$!OWR;$WeL&AUi4fQ*iR!E*n+-hpQjf#aN<26tTX&(B-|C&4= z*J$P=*@Y&l!_CMsaO~t9~Bu~eX9iT=LQFcG^&gVp_eHg9~a8}L6T$anydY;Ns>a}_5W4_vS;TSAFq-+zq!=M zJEhvcWM z(a_M>XH)P8K27%GT7E*~Sn=M$l@Q5KMH7EJu4$d$%#;3uE-ckpK*@;xDtpCBs9wEX z|DXV9zacd+EYUQ)UdVq<1HAtCD2K7@Z>bS~hPduFjj>wRj7Vbs?e`20jJ@`#3K^7Y zP!09TD(TbXK$2B5jT-^qGUu_L#badj=u8U5#ixwVP>mrF%^?A)kp=51c%ZDzUMLM_8S65oeN+D^3ZCr z$sMgb`jBp8SN~pePE2gSNVE3eY8XxKRRN5g@wF!ZR2Id-5U>4sJ#6{x5-2z<6ez`V5EYiNVx>kmjLGl~Smj$P)3Yy9@Flwv>~*c;Px?Z*-o9b#(qKm3Er{t$6s# z@Z^9BzcDhZw25(1-U!y7DYN;nFeg{PJUTg~F?kVnBLl&tTmR}x;HurVqS*OS&A^cG zCXO4MA08SOH_m@mmNG>A1F5$@YwivBX2k3=#D&>|JgjFpJiI3!CTUe1bM1Tji{oI~ z?;Ta@Yex-NBV+SlADjP%=4fIBGX7@YNZ)PiTa~#I*s=^62%|DotXjudF-X5YBA#A7 zB#Afw4YenmW@JQ&SD%Ik2|E$^{3Q|i*l7^IfEg~SxVkbF-^PX(=EXGR{!Nv>@Rk>U zWv)t)y?L6ZUVB~!>ioCFjXzNz{fF2Z5=Yg%h>j@t z;@GRdDbrMgR!a~UiC<76ZC!s<_(EdY14MWIQCiWfbg4+FqNFh<$q3GzGSsWl=D75s zru2^|q#B3#=dI2E2O6J0$KQqb*z;BU`!&sqU{OD64M{!!b_JU~3(*_IkraKcZGWxW zYp>b!uiD>VACZkSCIPCtBSRxY0+*IVE*GVF?Au=%8WKCmD(M@L_8o11 z#s6~|&kGd!+SgQbXzaD$t#BgC$4B1&NleE#Rbt}amM|iTQ`yT(xN~!m;WpeRMLO+>bLJ2gpd9z6!=dBn^gAow*=mhs%S>q zZ}@Qaw#f{s?!xq-T80>}zTSKYwQJf*8ft8HR~H+5cFcUv|8z`>7(`XmHZBaxX;PB? z_XdTo{vkt92AoXB8|x%@T@d?UhudukV~w}&92~&6={epvFd8KP=6_~d>Zgb^QH;oj zoFSVGb!v2i`qzIexa`|C8WC<($Es{{G+GTP?l z&YaKxT}a};Q;ep6h(L{oWXPRAH9XiiI{$YzH2oToeXm#j*MSqMxshEeLl%h~h5}Vv->Wh%$|||J%XQjbjS~ zSpMI47or%_&`^JW6Ufo|=k;ID;?1Hx-n;u)tflUfKesrb8+*25!s`3Nf1lZ-^XJU) zod3QY5}%C;jm|LZ7@p{t>233)#7^E2d@JpXl?n0E>eW9Jp-9&a$;6rex;aonruFwG zBs4bvrtqvbOynX+CkYE;bzr)*B#>9jX03Xcm(xO@U;Rnn*rkzmqAh8RVYyCv8+#ev zTo^Uy?CReT=^Eunfs&!VjRJQ;-0^2JGXK0a-Z%Qi_4-dGcv~la^H%0hjxO9bvQeUX zLt1auW!s5rFtx`9S4+~r{@;yW{V~Bgd4cjM1$IBKSHJmM{cGir3_(iL4?kFCCM~@U zNF81pfgRg#ivQ&5SX2y~4D(hH4zHC+8HP92*sz}0R?ll!n&;5ZDCBSt^o@S$BB3x1 zl-}jiZybC5FD1tPcSHJTxbNb()gC8^9}Sg6L+q~$GH1%ZHA3O&!o<)@sX;kGD^Y>c zP>7sg9~xZUub+_-e}yDeR4wpVBIK17^3@dH+^qkq*3o~z@9yu2#wsUt^~%8&u#d*2 zh71G4o6)|K*1({+lM3oVu_Jq!->iZr^S-8c@o80rCokhV@=fJpk*m1D_ciy-z9!lm zdv&*9*ATuob{g|){x7`Th%{J5Nef#min1S3pT90_T_FQ+KUjK>k7dp`RVqvQymK#UEbgIk%-Y6z3V{Bm?3}SjsIC}lZeR>0Uej2Ts_oLPz z4`r3@>a}bbNxk~+LFO3-Z4PYg<%xcRsdQ|NHlXR1IB&lxxodK{{pO(1GBh+Xfc%y3 zHy~K`HnfIOg9ouPOuX=i6{bgwFusQEx)N&tT@k@f74IKim>yf$qyN^W75Y0edi7_c zSO2q8HD%Si2u$-U<3;Um&Dkh4p1q%zuH1faO})-x5}ijJ+zy z`i-$y?-iNdi)Em9`|nQq-|aU$Z3hqzs;YFDZuO?Yp-wTX@Q*(eGHfdpG=G)L2(JFa z@Z=CyBmdLe+DQeE;>Cx%nn21pc7x5bD&9UgpubGHT5a$feEjMM)wEV3HrS-7n3p8R z_+~ZJeI`_)1z9=OaNU5`@tO^ma1_(c{6kCocWQ?%+j>Mh>)j96iK3HT&#}VRsdpb;iM$X z^|w0@nB?Cyp4%MZX3JA7BU}|Lf&Eymdqf+&7EQiya5aGGzn9g)*uv?tYlPOcR&o7p z5`+kuzLJ;vD{E`vb0(<1Cl4cyT~h!>66$+AsLqcfzHgOI4C+}Ro--^}{Hjh-y#DEz;ng&g>lozVx z+G^3b?4{9b!+nPa<;0gLWMBrf5D|}^aX5=dvffMwmE{flnh=u(QIOZ7q=|+1-aQCa z6q6^B*XdC;y(RGU>Ut9tf35*lks8@N3Mln?l-GoxdibkWU*Bq}i7&1-XP=taj;FjUy6NOt)x3Ar{zOTQt9>s$KD#!{# zpal62+9ZIk(0t;m zEUeJlP9?~gpicDPRvy3WzKCR@0mWaUt9`_k#_teXBf;SD8IJI(Gy1sZM|Q~y3yrO! zzfof&NdoVcTmLpeWfjjyo+qYLjHd+pET zd304YoHA5=9tx_VVRnFgs}yT?r;HZv%%5Z;UQbofagTUim(`5{C<4 zF`+nNg6^9CC`}@Ar0)(i0YR{ZH^%1Y$L1wi<4rE+*By7A%;J^YiXq!?Y|wbV-KT-5 zw!&ZwlQy9IYy$qvkmKtT4U#abJ#P`W*H_5#-e8uTc_Ckxwe(vRB}j36@iRuFUpCM+ z8oAL!lD`tp14Df_W(=ya1ppBbf<0^Dy#{6Fh6?zqgiv7p?CLBB|7MMu0P>VnzeirVR;VRkj`dU?BCiEBf z|F{W>zmOT&CriG+vU??|B%m0i)&02Y8p$dSxE{C0^{?LaA2|G$sqxfWy?(VolF`2K zi~f84ZDG1^{e~n2ODlRo8BF5B(S>hYSPfPHo7RCIB=Ss#bxN;HeQJ00h-9P9fOUol zl|Yp^MBX74Uw@A`=VSNSuCf&6*T|ShJt6mAeeHvoX>~WH^dX#W1Brr5rjty@4Pf!J zZc#;=R>~CLB<6&JrJo2xVJ4ac{HziYtP7t->th5g%*hZRyRKzRhtzUUDa5Ekr<9%{ zzy6(o{Q7sQY=v{R=qaf*H?9%UB7%_Z6KYHkF0#JMULuPbjJ-Z76`|a3%FjnRcz9lc zRhaREn+69>U3gm#53_DCwY6-cA-84rSF%nFZjBgo>>9J^w#c^79|vG&|m*=SY22oRYll?NsCI#o6v`$Tw2hf)Wv`M=akD87Nnw2${tK8(fI7 z#94@14GboeRojO>=A_d1FzJh_Fxth{|5oJW6Xi1|}fu6qc3 z^lQ>IS=ExZ6|{zJFC0AhLv!|iqB1{}H4_a-Z$GrC-NFwg`QYBS%i6)RWIk^RQ6ky)sVvw$`(Eh;DS1yfRJ20UomyO0(RZ;ee(S__C z37-uuAyB56CE>NHJDL5_u4q`jcV0C&8rAP2?6tRqjW;H>Kst5+671^t#QY##K`E7e zul+a9RIFk^AVl2uZ6nfiInA`!6&f7Q|4nT+WG{8ehn~o|JIi*5a?r&6I1XJ*C2u>_I4% zN7)}l*f*}dm+eaylVDRspSGYF!};nDp$gTPjM2k-+e0W9U_kb}!t82HK&UD0<&q)h zkJ^_a5v|h1?8NoN^@Uyetupyl7^b-Hd)*9jNqTuH|1W#*A0Kyh-g|y$EX$HCkEOvT zCXvZNOt6D(Bw6wgVu&5v#7+%yunEwT#v^HD3G^${2;&4dni*+i$)qj2c$>URUR(Bt z76;g+E$%u2ZlM=$lg8W&ZL*u(;=V`&U2|&)xg{;xI`O_g&pF@k%-Av}Y1-zG9n0r? ze*bvRbDr~@=RD^eri>cf=c9HYp{oNVfu1aY9az9>;!ED3Pn}i)CzT`mKeIszn0$?x zWd7SKV2owLEDCptC3PfRVt?D**KjLnE8i@O)ZB^e1)6}Q%Yrw=p|HS5p(|Znh^Vtz zD9cJn2OcsPh0+U)AT+?sp+RBMd`U$oz8nh|QW9yY2uD-E-Cnotz#fyYBP7X_e1@>w zcmS6G-j|wKEI!LLkSJ{{u#8HSMEshU0DY6EP=!S{ehZ62_X6i$5W10yK_UuG)hKYF zD9JEKv?E$&y_XwpEHu-bheWEj$k-<67A})H@o_DoQ1xJ4l^exVE4ah-(42T(V_`i# zS{GNhLIl9M7a9v&nbS1TZTGpsj$q=I#XhA+wTG*CMXVqFQYY&=BQ@wYT2jm)sPuG)i~Z@ zr1(@VYNWz6l>bu5VkbWBKBH)*(C+;Gh9d0yYt!U@`FzPl-csUX{m&1^If3XIu2R$? z!9GO=ax&r0rUy87VDNAz1Wc4H7qW@DlSXtIt2N1fr$Ox1^-4k}$PYWPH8u565OP7% z0}&Qe?rbIQGSnW(|7h`?xityaL_cPn>;F%HpD3*UYD_Yb|B2z(KGR!pVIr;;$@;62 z^>wo!$N9HAyV#lY2Y>- z?lk6qr2O+g0>zoC8X0!X+K&krb5hPoPV};}waPJUjD|=fI9^($iLAiKFRY=DW-$O3 z+9HZoyt=Apmiw?0awzL}QR1+9kr)ykL>6v9dLbAprpwpzqGaJBHDN-cqU6LqZX4l{ z5&Vn73E-j{r$aySML0eZmdQ0Qj)@B@Tx1z)_PZ#`+0_biTJ47reGaaNk`kC4#8igN ze1*)KimNmj%)%T2BeUN&VBxg_O(4eTFpo?9 zOh}rOXmD;}vJ5=FQLHCsFJK=H0U-aM1YFCKIY6{xu2fqaC%)7`2y-)Sl$?6DoANk*D+?kRFdoC!KXZ zEC@_#nX$-O0sd@Q+JOS|(&_;DGSX#J+F?)}8*nBuI^l5r`9 z5G4)i%X$^@gdGGB7ps#y7D60!a9s-9VuqS6w)Ao#A9q8XrDUkwE2Va{E))z+hD<^k z8>b#Kk4CWy6+Xb~OfL%a(d)=7w9}%A2UIWAZOtYP*_bw};q&8b*wz-e|EfC3G#Q>O zFV|N%%FJdH?Eq?mR2oz`*zhc?sXTOCB}xLMn3paH-Ya&&*H068MQfOH<92k$W*AA~ z0R~Z;8mH{Q)i<0RzR9Wk`+x8~ScD514H8u&*6@@jgz2oTyVTxwI~maHG!lRD|E;`5GUUgjGHQz!46H zc&EBkgiK$>1o|jXD88%5#T;jI_-5NP8d+@4M0O>6fg?qwTy3Pe87+#16M1Rmyg(d) zLzW9v54GC-9BxE@@AZsXl#sZ-QTk}BiGiwN<8Vf{x^TQ)5L?XXjdFCzO4ebyc5=&b z(MGP}va`7}SBzonLS-7a$Pl;)>-bA^!{U67aQ=7%+5`!%Yb zsfTM^_~TuRZ9e=%O-6-Fn2b2?(6sQ3nVU+m=XarT)^CUhavsjqM3Q@rxz*MVg^lbl zBLpbTuM&FBr+qpAW+`w-EXUY$!cy(TYzxCQ6Xv%`X=Ccm(2pdVj|)}o_eydBvoATH z?Q>s-L<;_k1yX?U%T}0Mk_G+QoVvwz7&FVZi#-@*7tutC0vi_NgSKhpIxpFrpJsS< ztR*3`l)(i0gqX965b?0a02Z#(hvMxs@wEG(M#c)fu#H%v6NN3}Je!h*8#UOa1jcOJ zTZ@vvI7%&N*mXc0`k2WKL3Bnu5MawSu?W`8hylTm5(BAdlbxbMA|QTS$&C}3RbySN z$+t0|wz}ohnu!Z`QaAkM`>O#QY@X-{!goxHn>+<8hWdQyx zWUOWH{$$9+O^nlHtP&^2Jp(u)ZSlrJuR*|cZVJ7w$K0rfws9%};Rd;4Z9=cG-_TPC zkblAVKN6_?3n)ggrt))z0z*7;HsMMB1puyN4mK9PohoIPb%k6*6PmP)4GBjz4JC_DH95Y=tWMqsXxN(RXL-WPi!z)J8bUm9y~#Xmw;}&+ zLc}lFVG;Va_~>Q60w#Oa2&C$+{n#Rl<6_F<=s2t!$Cce^{5*6og{s&Q6cS8EiHNFk z;=AZMm0BQP80u9$SF6cn;q&}yBe?K+rI{1N=W3-4FG<~-j7NS>vK0wMS(zg@I%0JZ zg<#T_v@$M%h%eK@q;LkVIYuY1!9o`nG7YW+W8yf^a`J(;g#vU z5J%j#VQ4*j4q-Q1VDVA5CdoZnIE1+v(6Vr0jE^09pHT9P`~g5M9=?<;+@GA@fY{>! z4fSutg~S2P{UUva0uVxKfKDL7$ikP<82X~^{vAt7OW!Z>eYZ^zkwA&+M0PuC7P&a9Odxoz@fG?)QRngZp5~OLM_~9sCtyu}XxGhEQq;UWCYIjttaDt3bG9jj!Y2 zfF{O?7i_p4_bM#M3DKGuWoby0bZOaaltKsSQCHVE@fy34wUWOXzSN<}X;Ol^nmUwk zr46POFzjYW)Gj678Y0iGn_G|M@E)*9vOGRj?!)mxxg`7K<3vNTInGtP=m#tiKMLCT;g(ho!^3*4Ae+3N)y+AF4ItTPHuo%CiGA zMYEBA;E)nN@IXR}k`i082yNn$bh!NnMUxmjF{*E zg;AQmtDeag30Y&|+l__qf^Cq~XT^n1j~k2lL%gW<4@GysgymV3CpCP{4tIlYF4Noe zc(U+4rWH(!pR>aog;(TgEZB*wFpA6X1>5$@J%9>gOjuT6BKV$!!LSUo8}s|Mf^96k z%8d<7)B81kq<4-9W2oOwgXy=2Y)JlyjDA_#pSdV z1L3_>r)P~O33_ok$`p$g!hbZ`F&)UpbbNpogf4-zv=-#v1Y(9B{wRz^mG+jEV`E)os@lP@xDF>rtgmKFQn<-riyI9pI1DcFTzeLAv^ zH@fNgtRSTiQ<$1IG2LORiWJdl2&v)JG}T0EgT==ju_%2bwZS5bTFt(rjO|gHrK@$A zCGx?14btLM<|Fxp4`a?Kj(fZIlHbs|Pw7|KJYvmZ3+ITB!A5*xN0{qY&hfGxBUZTh z82cH;7o9333mUQJOoift?JFO#=eZ+J6~1s7m!()TXAZRz5-ipdIoynP1^W#Z)H94N zK`fy8l{i{H2!ZH&aGHWB0GA!YSE0^go-pgl>BkmB9@aVGcQwqbMx)Dfah&y?FK2Ol zF{+dj!N|9oDP5C0Xm(12L;d>1;y4RkJ5S@C=Eri8NS3Y!X^a?8_@}2rkrsU*h;x*# zG6;%Sd`f~YAEC7BbjvlZ?6{tXRBWtWet zHdh~$xlTW0;pLU|Ub9%Mvy~Nv#3AlbF%H!OCMju~)3i0zOw@j)Qt`B^ffM-&`<*AO zPL*8B zy@77JA)wW@Mj~<{DAf$vHCc^2qvqn~Tqso9Sxt8~Ien7o%Txlh8<^?rTC91dk6c2I z&vr6%Fo?wy`m+Pz0#)&Z5}LopgjvU*Nsd25p$eD9d)k!pjQB?LusS%aV>&}`W{9ws zVQ^TB%e-C`3kQ{H>B3|*!>n8`q(#DV)+oejiYjikB9a*5ulf}WPJ|-iP(Edl=n}Z> z0s`ezJYnKG4e#-1I7r3<@vF$A*~4L{#vvOP{tzrw=}gS@8zB;e*|0pJ54=!R{i4ir zr`{W$agu=ABLOrp#05LUKm)lFkBp#=)LaY(AJr=_@+t59I9?@te*Cfq4m>Bv7b7vh zSS_pAXtXp4;n}EyaaK}H%WrF_Kkq7NO;a#R*OZzEv!F%J1C4u1F7v<}1?5T){Gy86 zVGbcgSzVA>v2uc|Q0vkC$)QI*ON382KW(B)Uq*s$GA}hpv7}Tsa#VGbllMAL#4qL-mu8NxDrqcUw+xM! zgIXGc&Gv=BAFTI(Qf?C_nul6wkvz&DtX~TIoU;QCGi9iOTb(uQIYb< zjXJNzI?ySMKf5xdRF@sB7aAR`k7h;#3EMvqNuku4ZBQ~2 zRA;b&b{SopDK9jV>8C=KO`W#)?dC=VY33zNt~cpx1PPH3`Y$AtPC6QaiFGYJCVXzL ze#xAws}WUv*<-eFgc-qxGKa_gI4F*} ztrms^Q>I9`_-h*?nnGoXr_7aQIIwV<+&y;$0WMO;m~kuC;nQt# z)MAL>D~#I?IG92*qS6aBQ%99?6-!R`2>B;_H0o<*p^>8IlRa^_v4+i6F;NfsjT{0k z#L^`%p48E711J#;lO}rz^YC{T<{D=KD@Z1i_VJ`uRowRYCCEV`l^h2v*=<~M3>DcL zbig_>ir0i>a@GZ$i<6=kI0R9UUOl@E2(zoTWdhI5wK=(a5J#~R%m28-9h$m#9I}gNFHRXrEnO`#$sX+6X4@Y7B*H@v)FJV9t2NPNt8CZWo4H< zuu8K@D|cAb_Ynv^DlkZ<95+-sWx+XyQ(3%xDnn~5oXR+l0U;j0ESWoO8lQ)gawz+kh|?ey z9J@fQkVy*UR0fApk5fKFjmc@&SR>S|fl8h(I9zf6*(pn5N4L>wsFcYNw7xIOInG z27L(K$HG>H0%y& zN@UoTzR|EdP>=LUT-X7QPr;dK&iJuOVSdaJO8APWxgu9+zJi-_L6Q}c%>Z>ynAK{w z<2Q>zg=QxlBBzjnIVaBQgW1SiujaPKs}a%Id1Luom>nf!nV8Jq!nJHD!ON0c$c=_o zp_P53Iq_QI#(^a?oqjryTFJyY@!R~-lxXt>J5#yaC3RGo1&1aY&8A%C=oXY%lDQUx zTFd*4)db_XUD2d07G{ZDGy=T*#X`I+$L!%yCL(_jUraah%p&xVKfQBcv#EV(F~XOj{laeRgrEOWA3wCih8TXO>%pKSC&7!)UuvcDEv1SHx1F)ZENs;wDQdA7!8| zq{u^;IkL*|K0Z4rMn#c6E7um4DYXJ&;9;#G{_xB!6zV6{u@iR9?qLpsxmkAXgt7nm z4UAf`5J=DSHk$J5lM!Wb_wGT(K-2u4#AK?F+Jaj&X<;V7t5@z7Mro%Ij2e5cBTkis6ZbSpm1V63APyjAH4;CCm>Qz51AMB})MnTccA6YuOJ5J^$pcZF z(ESuclDl8x*TOm_9($Gp$Y{pc(2?exQ_YY~GA4~e*`>^>K`Oh~+q2?ONahCjm=Tky zV-i_U9pj+rF>Sq0JfO?fb*~ioi|AZ9Y|3-wQF7CZ(FI1fWJ5<$Gb`#FsERCL&SbS?LRF{B z!7Syp<2eoP<kiWEb=U6eQ-ST^vU7bRQ^g zi(l+R*lp%6JnP4VRMX&=NP>jj4)ooZocx01imaBo2}W5--!nP=rW2GftgKFa`I9uI z!oy7kF3>HIoX%xjnnjBhSvOIr=OmBi>i5taQdF`_d;)cvT&t1~20Ah$7xSojRKZ1? zhh^hE*~Nkhu7_SoKCvWJO>*lVnIV`$X+;9nbNWN4*CieIU$GNL{f*y&%E1NMnR`tm zni3CbW8e4|ks#e8X-voljWw+qC9y!yN;dAOup%_fn{2$ep~KLNsw2!~QNmqozN@i? zi4xja^!=`Q+`}xlTY#%R@Ipm9XaO(eEbvRnE(Em$HUH;lZvDhXZ7)sLJo=$eeXjA_ zbyto3Ua%wxs>Xug-XI97;~2Pa*txNV%Z!2;|MtG`p1)h)@R6mD{MSW)yRItx{>yIp ze?QmuB)#U%K*lU%KUrOWylWAN}hifBEjuJaprwM>hQ7$fvHH zb@~5v$?U<`{^M`#+%WRr{^P5Ez4fh=fB#<>e`EU4O#@rL`GX(*^scQRp1Akp53Ts$ zKT{a`;UE3e1IzyMFD^-3Gk)Fgw7>8FzWSo8|MBV1U9jNytL9Lrs+bJbj*V}O8X4U8 zr%Ga=4H#6h2^dtN%^g(L$(SpnUdB8b2^sTcG|1o{`k<Ak8E+9a!5QJP0#@>Z*{D6u(}i6x)!l(h@8&6osz%j3DdPee z3uG*maiNTN$yg-gA{p{K%dIhQ!J{&CgAdg{w2moye-p|ue zSAglugC%;;^FzV=f?o?hNx&s|>bdr%!7?72I@cyj$$~!!l0H;zlG{rZ93uo$@VST4q+5;mC=WBpbca4E;)D0w%m$A=qaB!tSkwlnj_nW&^C5IQEjH3jX;Tq z2Pjo1g_>qpzc;roPWmxRZ|n9`mP*?qqXgu(>h$Rj*}f~|I7Yr1W9$K|ySv9)?nf{t zc3h|ieNUS|nto5X@8n7HRQZkQ$0$NAxvNRJ2W31L`Q53)dgQ0j$)gw(yJU>X$SR(@ z<<&!2K+8QQ<8F)t56hdQ+bG~97s7hq?{bL zobxD`O`cL_Yr|URyCR!9H@{q=o5O0bTc>K+^+tpi$K+J6@umeffhR8{$bS`shr3Ao zV7$6oUwVK83krL}M`iuS2%9B;!;2>g9D6XzCql$LkZR0-D+&R)_R#xru>Dq}ard>Tu>mb@m$ zu^B0!q_ZH8)-I=2sul}Ti(`uOGO>&5sr=_LiZuog)49Z1cmX4qQvlFU7LLm%_}YLj zJWE;wa^Z&xSg$BQmTfaeev9y}xE$+*(6P7{W1Pw*$I;&*2h?pDl@j*Qztlkv4QJEb z5-2M5x=1*wPM^$LzAq|zq(BuqOk;{j#qWeZrZ=TzJ3=4RlL{RK=v)XC$4a!}VeeHk2DpCuGQ76!jHlG88bIsTH05YVkVif^hyORd;f zA&jR$rg)Tf?nq>1TTJPI5Hfp`yLu&aM{Hn(ZW}O`d5`k#yMQzvX`&4&;hOo;zLNc* zjd-^w6b{|E>aEQh8qA&meQ0wVJ9}XkH7ez0LXh%fo%ohwMr8g#y@i~@^Wd#AcF5Qz z<7OG#Wo%Wt-}WFxY>R{#p9AX+OeUI@a|1@Mo%lIM6EasBH(E6gGhshsur};*JJv`p zOI~r}IVvDzoUFHGtY*>7rX40>RPL%*?o}1`dq#eE-offXSJ|sJ`O6gcgra^&0dATj zk){o<4OQr|uvD(R(S!)aVj^QgbJN+u-9$RrrI(~SH9`H5FD=ahP9YO7Dmm1DTJmmnc`{yXyA6?r~yk-&oF)U9DU zt5{bQz*T(YD1tLxbAu=G8$5D*)Tm96v=&O=;p$i$hx3pZL(N**$6#s ztj^SLE8Q1ld^t*Sksw^S%s^ph>*ZWWu;i2BOz^zYd`t8y>R1I?yWTKw+EG&MRqVH{ zU&~G$+HuasPO{@LYwDD5wvJFJZ=EtE?Q{_OquB5KHMu0GYkaMdI4`p(i(y5CCWZYP zkH|_H$$98G5=9~0A|+ZHHkA`*a)XM=>1G3dX||bmqtfJ$3g6+oj+<{>&!BTsU8_7n z^u}o+df{n|35}5H9vQ;2={qrsOJppS^HEY8nN?p*ACnSWHH%jRTkE@IeN<90K5pdX68aRXq=&R@!5mGU#D;^xz#yQ7dpA&jZj_FWuf!TInRyYRn^}*JozN~mYC2;ld|$I!po`{w1wjD^eEL4D zD821Eot`*EAJ2C^5FtSnD2(uZ=Mm-iNxa>&g%bJffU3ENE<= zRb5IYtndiqf-iRW;g3B)-N9Sv++jWmP%d(K9A;0N-AjA(X`WduE*=+>61#h9E8G*l zI9Nm;Gk9Mda2$!7^jO7GUv_f>kh=+m4pTlt+(a5KszgxbE$bf4h zy@U6^7_(!~qU~gbNgW~5P>4#2e7G;&7aV#4Kx;?1g~lmhc04DzAg>z5l?0aw$}NEq zThZLjQ=UJeG?9Qhy+SMD+3bMBly}>8N-rnJ9tH#LkfQ7fDR?>0L--38ROMkX5zP_V zXc3qQh-J^A#vu&C*U&Ez*2qCDVVsM`c}+`-PZV9joCS6M%H1f@!-imq2BSaDadDhy zPF$`+ax2nTL=H|sqeEum4XKo!2vO@{H(1m*8)^@mX(NmFQA{Hm6k{&~rxHlbhcfKw z=F5n$7?+AX7s}`oT^ySSF%0b&L)w7r%QR(f%7M*MUW>sb5|T!dDNyQ!{hexXG)Kxl ztcQ@VEGT(|n1*J7C#DXP4IGW4DZ(d8qmCjO)X-Yx>4!CR{98s$#_h)095WJHp^Z$P z_Qs=LIo9Oi?vi80EJv=YHU$7#4{|dk)g0F)POf4~owt`T#!j%&>#CnfaCx$~y6VhB zX0FCr^_sY4G;$dpBm?9>KG-9MAPmQkzLH2>W*`$CCR?G*+(HpzpnmM`LQWxJq*em=m-fDxPc&j;f ztEt7^7PGipS1D*PaXyb+%%*Ujh?SXj`DIo2CiD~?6c<`pl@T(I4d{N2N#=KO^3B=J zF{y-!#Jy?nv-3@8T4z+#5V_1-gV*Kl;DY9v)tPr0^cpQ}5rcd3q|Vdp94Tt>I<;V9 zp5B3tTTTRNVL)kIKF#j4p^oFlNKxFQw9pGVq6`6yK!v1(sllLzm4wVsI;^9Q6uXec z?ACw=`y50OaeKtEH__FMCPo!s%Z;i@%c?jaA?bsvqQLw=syNwOjs`%j&*%j!>Q+NcygdFox8G(Fj+(+=N!D*4+C?O|E z3uMUxM4jAVMBVUCo(}KGmGdtGzg{TD!DbN|M<{0bzo7{zs>GW(sQIY*R!vM)Oayy)B$s}9fY6GxH z=(>tY6l$ydkOSW;JsQsRSa7CC>P(MC(!;V$fjJ|~*%M4e-fCUWNtQ4gcfR`&pbmgF z^!c;!hU8>J+`MG7oMj$Mn{uk1ShU=^?cq;@uf zRJ_{4YJRd_{GL?X>lv(uE%MHtx=>{)74`5NR@zf)WQH_v?Cjp5b#7f`*(0timBm$o zRu%_RPF@snfWt>|>DW!<<)0evbMh5+t+kRhM_X)mk!os|Fh{$32nc@6jrsHY4lw!6 z?<%XTVV_qnDm9`aajDAav(jmHPzzxQ2<8|H2LgNGD%o#sV)ksJvke1ex2~3j*+FfP z)wSNmTv$qlc5xVkp=9<{ax%r%RGIy#?#GeuWXeEsanRJLMp;Y=tEIwe+@5Yh6WPmc zbwqP3vnY^)-oc=))s)HuwJC<+BT49f?$rjflY@z1@knr)H*6WU8s3v2uBf`WD0{fX zRIgJ^;4nQppw28BhwF1|pR!zPNawjPUMnP;3v+5#I7z^ITQkff6e75ZBj%n3$ogMFfbP%rSohmU#MgKW2B^)6 zl=`$r9rL2id7*NO(6~B`Ce0>mA@UG#$e7>%MvT5cbO(A;W-?OB!;I)d)uW5i>dqYMzP% zWAa!v6`I8%Eji=Vifu4g0pC8u)&md2XS+oreWQ^norch>I`XPEe0BN_4qu&JsKa&o zepOIs@kRR(2ZAQ|IyA9QvUrMwhH~5=a!L|0?xE7tuOc&f?)W-E>}2j?btoM52BG)_ z+x;gktNUD5Ceq9=F-LxhO6Lhi#m_m!{DO=21xvHTId&LAJnE47Q8ilwL}`ng=W~gW z4Ib!^MDO#2pCFZc1agk<62a+YVLU=$ZoR5 zr5FeYjLDXaKm}W`+cU1be+NDr-RGzcTK@pVw;%!R)Gl%hy?6x~D+>s`LqG1q5`jD_ zeuwdY)b+k>>dyQpt;oDCkVi4b_5NEW%*~WxZbk_v!iBLtf2o((_3D;$(7~RtVI!iA zIJ`he(HhR2cbiV0p#sV-nR~{^9%@?n27F=t5p3Bv}mP;A2f%JexYIko#}ITRb(Id%#Z#dWSvEHE_mS z>Mc1DUyTJ_uNu*4*I40izN^gMqqI`mFf`2p9%f@Y{C4kkxo zqEtUs7pr-ijogu*SPM{0gTRpnj~Xam@vibjc}9tEAEIlI2@z|piP?LLTI6??YL(v= zW;=OQ;<(Zad1|gIL>)C1sl8lk#>xUiCmfv16L#KkBE+X;FdO*8z% z9E=oy;G$|plzZ6husFt3H2d(ikw2nPExbH#KzYsmgNm-stq15scrb+d=tz1^Q2y#QX4XM9{V&&ioz zeqn{5cyFI|$Z(3C_FfUr=1-PkhjCi@7hPjsEX8@gEY9=R;BUD&-*UTZB6Vmq!u*4n(s2yr57QT~P|sGCT(igM(wA+a#vz&W~W z#i!7?a-OVz<^|&O9eaZ!CXACfoCHxM9N?os8-CS7a>ECXZ}SAA>RFK+=cSv#J-T)Jxt~QD-H_Cu)S`N3P7$duv8Ed7LZ=`-TU| zfHu+aj5>^m%0v#yNep%gEH)VtQ$EZS{wN}=J@tTp#0;yrK$JYlmm}=-9o2Gs!Uklr z);!8g=lA;nd zY8q0UP4_@g$2#vjFj9x0w5D`-AgaO6f4w=j zI>%NOtn6sMAr1mOW!YHhauJw%6@k~a!m{cUsTy6bU?WjdI`Iknb+nflkU3AyAk(x# zEltd4Ubdd41nq`^-=vsF0eaM)#cLhfBw8Bs!j#NTU50h{|x4k_HIcqXI2kpbo}| z91JY;Lm*lhiRX}rAud0nAa?0-$*JXN{)Z+ro1$WnE}JFE0FHj4D1uTusWy^_%Deys zV7M98p=)s$iTA-i!z}{neeCB54gtJ`C($yl2Nh3>N}3Lk#0Rr# z7e%zjnDgm+=q(2-^u!rG@hZa+wFw>on;p6B@`}r1P48-mkt+{pgb}q`#Q#D?=Gw6{ zylFX}O!yEuIFNoZzl#}{^gwtlMD%FvMMfa9SJ7i$DM05)B*5gsMxgp(1{Og)FqMg5 z0d3K{-aKsq=)<=z*!gm!iRrVjk5ib2SLH`bAfqt&;-%)wCjJjQ(B^Rp9JQcMlSt1C zbEtVg-+5t<*i|Tmw4eHsS{BkGhH&-?`4XL&ZQVbiNW0nPzFmymxAdjewr8;dQQlq9- zH+31DbMxG%(b_o5T!r|Oa=9agzvnK*(f}c3Ak|!0ACw?^zFbuPZEhq9F zQ!7HEa=<7ZO=F!1hoaSx?Eg~S1zh8<2bfqk&+G$omDUM(8D8i%Bf9}JD z`&>SrEH2`yg&Z3TdHUCw>cZ2KHwKE1M1y@2Sp7*D6-FYL_LE} z#gGJ9T0Fp z)$Kh`v7sP0u{a!uJTb*RDqB$E7FI&sw%BFtg&$iw`*500oU%R|uiW~+ncQ8zk|JtX zM!E3;@C^NgB+b4UziZ3hi(iCMv;@=^UdK9$z9gZxVDu$pM`F z?gl?+_e}YAe4ce(kA)R)4b`h^K*MA)3;J5ci&^`OX_JuB@MrnsETU2PxcX<2f&&el z+?=QGkfjNMoVO9GY@IeJ7Upd1*7U5Y8OSfc(B(}#txZ`d7?`Lv3=D0R2rIYFg7{p|S$rwxEX0Y38%K38vJ^t!zjl{YX!;TzSMT5I84Kb<}-0uaC zqZT=LSRyNFd@)m*!WY{g`{71aGX&Db$L3HL^m^1b5ht_Em2w%Np8^kv@|1PV6AtQ6 z7^}c_q#_Ufkpl%fSP90}cOoyODW!0~p9DSPE^RHB{mWm1#w+gLUA)e91LY0-Zoq@8L zw@ieWP&~Vw7AWEc)LHF$L#^NPptRz51Y+HI4yI^%gh)uufiDN&S;zR* z5y;J{9kN5k6RkvpWA5ol*^*e++mbFrlypm{_(P4s$)yPhgFdVwMgEBcN9(2ny9Ya( z6(+YvOCwt1MwO9&D~@+#Tot|KUo(Tv*q9m(aY?Afceig_)Wm@Q}qqm_YyzKHxh&_XhpJwbI}|P=}u213|?ho5`W5+F|SsFdpLf zX_aHzm|w`ky3ytu)q!js`kzE2mY}bOJxmBx(m;km9M#1Dda&LlIan_W0sbGXhX%mQ zGJWw?)>;7LO~2L(U;-PkS9EZZ16Jw};Al$`aMLsy2kVuuyj=T?%ftl|iAz?ni6sfA2Wj${qV^+Q zW<%4g(T&CPkvJn{j@-t^38^&cQd_Gq1XDdAuxlcb-9VX>_*5t)h|;Ntgq9kT`g8oG zxrEAWH-;$2$Ut#Xz_pmxbDYqZhmCNX9l-(6VY`bGe~$tuchD6O-80TTU(n#!>uyww z6!p82&-rAlQ0|C^u3@__FAc}q5pS7pQ`b(nfzOIFc1R379Tbx4!%o%~9jz`6>K@w9 zK(ghz)@ zA}YkX7>s3%84C?Y111(p%^a8EhDvoNQwF;DtW%{QndP=gK zFS9>bvQL)Bc@d$Ni|^2Z>B?E~42#SpREj=dod(GDAAj)piIci10(!%y)nf#?cZ zCnxVskhMMvF<7I2UrV8mq*xAgqa&9P7Eqn?q?7N&4&ow@BrL0=3~Jli6joVs+fj9M z3|4Xd)-=1}cW$70s&E)tC+vpy$h~UYq;_w0t{&EN^2;KaaHNx8R=ZgMH}Q?L`@^!m z%D%EQWpb6WQ-`;Ud~Niwvr~M^T1U;aV5gl&wco?k4Adu|hm_b%Xo`1)X&AGTG~JHL z6LN59pASol6IFa{xr1F}QCjJT#H6TRT!hoKQ0IxP)k3Y4{wiFkI8~Df^i3;Yve0rn z%(eCKn3Pxf;);3)Dn)jO|L7SB9?S5VVp=l7M?~;YD5Lr_pG^VJXUC1k^qbw)L z*mwx(@cK<>oq&Q7K!C^4z=qVIiIJ}3njQg=P}kA`sv$oFa_%JN+=j9!1@#bbr<>L3SJBS}~(1av-y zj{@+u`-P$29O__w23cnBFJ)pb#tl>qdO&Be`-g0rZFdo2J}j?mZCP<31v+pEYl_PR zWtq5}`xn?Mph7yShg&J*T*aVZ-N-QZre;6x#y!BEkI)>>VC+px%uwZ;Bn@=fUc?5( zv*|-zhK+qG|0Ydt#dLd#l`QoQmB92XKG`1G!>(>SXgjtCyDaZK`vQt#d!rCSB_flQ zBIZ*#;JQ+EDe_r{I*C7Zm1kK&qw>rAQA{?DAQ*}%K!=J9_V^Q}=1(rMAa*8|zOcxB7PyZVLKM(g!-8C0!s<=xg2}>Lwv9xm6OTQUi}=ta zw>P1KTv{FLUP!8ne7)AM_`H@eN6@OtO&e?0sjtO|hcuBxaUsYhv!823fMF&Ykm5p3 zAXKJ)h?v)=K}lB8OA+UeLN4voE{*y@AAL2;Qr(FzR$y>3l1WM&Sz@!bvSXNXH>Ik3 zFdIS^51YjiJLsf@s_fIMxrjQ|cZCV}$L<688D7KL{G$f%%9A`jfC(QOQ}&4*22(Gvt75z1lOXy2@7b;N<5Abw< zz+9DgYazc;0(;H8VXS31#}-ez-E(c3^Gt~-gqAvD=N%(B*~4~&&j=<5EQc$BSJB9r zUdzao;8k-U1^NvpatzBhT-HtT4ne>|$gXa=6^={TYhO^r?*D|y^$vCSL3d(xnn zPn3ME`QNRoNx7jWv{YMC>3`)HTf~!L?dvS{y=LAg6WwVQb`&7HurFBH4$Jvbg`q{O z65o=UPnUAeSZNHJM5&_BSX2SLG53<0)*ZQ*E%AQyc@Yx@(o&+6@<6|nM3V<1Z?rMh zEa_mPWMz7fs?4dd0unl^MvKf;x1pC8rRJ(~l`AyZSm)bzeA zqsJ5j4XvptWIx5c{sh5s-;{cueg(?)}v(-7E)NC zu!*cplr<=@&}`;redPaG6Kh5RK$t9tzD(97G-a=&&r41Qe*9l_*zPkuVjXA z#RIYzYbZu0_QDI8pn~}esz_wbzS%X4MTI%t!0(YAv7M4XW&TfCH6uZt3Y9~Gx+ug% zbYX}@bWuo7vbivXDF)db1x)S`0OGElB`KHU32TsY$!etA>hrYqPAIjqFekM#s|h_K z?1SU7s?Jm2<=)7gca1houg%n>=B4KB?5Xr)58ok_qc4 z)36gB4?7y5>YI52JW2*(#~Fczolz^)k=ob}!&vaEx^Bi&9@A?LX$psxM_#mB{Dlgt zuZgi7(C=d1O1&$7;Z4Koq3Z_+w%pm78Ort!4(#d~9^5+;BVOF%%~m|NJLJgijs>}2 zy?*=Po|QKa^k#QuMzSNzQ#(dG`g%KmCA079=H}M6X8qdM+Gm|}H8-zrZZ!`d-rm~2 zs;y;Ji(;C;Z2Zr3ug#=8+PXWsG9B$LEtyP5+nV-F%j))Z-I?}P-9+eY>1< zxw|EuUe&gyqkC1`s1u21T-&v7O?uthb(!YQj@8}G zEghX5?U^-eyPG?jiNC6)rM+!+_v%$$ndbDm)x>J+>~3yrYj5r*$5m}z9qYQ+HLuIG zuU_5W)}CIyCezlswzai+)#|mYo153Pr(4?Btj?@!&a`y4t?Fu9m1%BWm2Pe8Y;8@q zwXW%2+upveHBIWybZ6`8?v_;@Ycg0`+dDftn_IfqwXJLJT1_ifcXoGlP&Eo%2ZV0} z!d;v94W#>fJ9i8Z-ns81nSqTXBbok=zJ0B~NLY8ax2>UStJb7Dy4I}&RvoRa?V0Y@ z?$w=Z)2ryP?o}OpR(Ey+!Iss{?On~S9qDxY>XzoVZXng!yk=D!U9heLsCTbf+uqu} zrfXg6YC&sF`>M{))^%$#Yr0x9UEP`Hjx-(D)!DtSdrixl*0z@R_GW;-rlVzDOUt_U zjy0=Suj!!QSGUncYcs7atu3q8Hg|Wmbgk=ZTb=G|C1Z@1cB;|5Zq+)V+?h#tuW9RS zTf3U>?q1!R?&w}kRa)1zWV)I`47vr7V`NsR*Ql>oWk|M`imz#IYwzq_69n60!Mj&p zzh&38!|DFa-ofG9mwzHNJi-vT`i{1hs~H@L1yRuE-jSic^uFtfnN*ro6p|utZ7itL zs0f1kSTN^?OkXBFk_m!qW5LEvgG2jIw^LUDuO!QHq*@T>gwuV)!MRl z)mrEp^k7YM3xuL$Eq7eUg1Oc+cUVd;K92?OF^{OPOE3Tdt(18;WQGPudb5MW`)(ZW zi(0V9NH&x1TA8{oJ$yS@G1xIO z*q6y>QiiV#wpA-zT2f0tHqf^()sq1qIx?N+{=RC&R8(=Z&Im_3^2~5 ze6`Bqu{qN*y62Y-9{=iEVH2Hfa27 z*Xb;1M6_ee@bKX9FAF$A+VQVmsdK~Q+H^ME_sa&4fAvb88y*n#rTpKXxg!IsA#-_Z z#+l~Vwhwlu`+7f zpqr3~Gq8dKsXNkrqnT9q@L>PBp>>`@J{$|KE-$14>YL!9hnFrpPZoFau+llRDC;;{ z{EP3peX$_>wuN8M`Z&`C>j|qf1LC;gR0Y}$Sd#N0%~&oL+*Mxm&(=Ths9xuR{6}NK zmhu`@bl#3k=Jv8e&Xd)KSn$DfW@UJAo(!&w1zXRVfy4Z=+MEyfKN1T*e9qj;aBAOq zYSkGFe!V;&*GD1|zqldP9ShPwcNt|cIZspSV!`aqTRwc_N8pB!!u|abw9%~!L2F~; zMHFco{@uNMMu**sFg@bd1+e#iuF79 zQpn)mYq~!5skU}x5|_mStMZuRSWj>*7}*E4XLh>IE&ITeC~V%9$B*JKtn=CX8mN*E?$8^|4@EIgDnk z(>tGdJ{}9U+lcUZzVh1MzRbqq&Ys>oGS>}u!N;EA@nHn7SFGP8Ii8Ou24Y}z$VLcq zvYoNu`kyJs8wUIOm~qaTDMVWg%&s2h4lnPTX{tL@^c4>Lwv}Wc;l;KAL|?sG$5Lxk zhWTWBdLJ@eH)1oxYMTw`!898KMa73idvLN#}}fzBrbE>vx_z8e34G(6VGlx_3B? z2Q{M7w=Va|K4t>SYpx;d?AdMTjRjr5kcyX8c!rXg!9NxYK6>7g_LXWV0BwSCOI>{pqWn>Wxoxq)34BXEYyjCg#0CI;PM^y5@zFu%f>!Ix zAkf0*V_rtvm10%f$wZb-iBsvM1|z9aFwS#DB_>WB(Kb)hnO?9NK{t#I9UmU;?PK;? znJQ%;BBYVnxv`*Hb4VKL^!`|IXDQmxSqqz7tR4&sZG^njn*2gaH`(mZQ@Yl*|Khew zJp1ofxFnB1PvO51xSO2s->r0$s{K5rZ;u5ZF{0quzLgc+pJ=jQ99^*<>J{>(P&dti zl9CzG)EHj9DhO_21G79cjZETJwdrO39Gyrg(+D}; ze&I+q%@*zoEqPpQ82!+xjQTPIdlZz61@ne8dop*f@avbrb{EgZpcq|_`X`!3+(ddq zrrS@}o6;HZf9w6K3v+79v%Vd;T8NQGunRpAp4l-Sq8Mmf)(X#@<+gp z^CW4H1eU08(d=-VU5!XRYS-ZHnSrZ2)~rdl zccMnKZdF^Rc`b`}YEiXSwZOu=Kl~QP0##7esrBoEOqYU>U8i8R3?;4^YD<)tQi{T} zAXiA(@@r5Ws?nLFnBP+bAqoU^N}(+1S}B@u1CDeU5O2UN`RA5;7M z`Z&!5IW0_pQWXOczfCqYYa2>k6cObKcX>wqXmZ4WvIw?48va+}?-AhYV%9eh! z%5!IbcF5_9$hN7k7uiP;h)!RZ=|=$S!mcv~icN6du1TnyNKwfJszRUW&Fod9l;!ns z{;nJwcdn&o4O=SJ6ckrjl;6?YNwd%athYs&UvD~u8wp*P#)1a18Q1o)1r~Z*?^i_m z@F+8%R#`JgNipACOAF8eyB#_=I;2wSwvB8W>>nB&9q5Xw7{CmQyj>m%OZ(w{GZ%76 zESSGt6Y)8-0G$`?7#zu-rzA2;+yHeP)Y|u))rH=%7CUEIs?80V?C`#G#-PpfZ&2%R z7({_;#&QuwBRp;#@rQ`+y zUO=i9&^W3_$$lHaSNkkqQK*Wz3~#Yv&acyLG&}mgr;FyPzeJf;Mn!19LesI})^bi@ zCUKvGeJDBlSvRGHT>V{rl%*+YK!u*Un^j(DnLKY~=7I;_(YB_F9k5~raM>h+5{`T_ z7TkQUChxL1GnebqpKm)==);6Ql<7q@E;1Z>xO%(JvKYRv>AxsWSVz^FiMIES-t0ah zrIhMA8R9m2)U-XL@-|$8i_aicky{~JY`Mutl6&VW!)Zz&*cJdisA;-z%_j)RZ-@I= z7A}s;?CMydwT`Pm2QtI1UXQ}eyzs7Bb1SCyDxyF?e$4%zSa6{R9LqK|yNzqujQ+}I zWdvDTgf3w})MSQGVKuu$od}}42PNtWY;mE?Y(}3cjj94A8?vI60hSdb87;YxFZz)Z zsvgq#w4-^EHsT8BC-_8uE|mtl8$bhD;H1%x*mNLE54nlb6i-6PBlv`8ad1N>hIkW) z>I0bCZo9Kz!NLypAYL#Nj)>Ue%G?es%E*?>x`%0}L~r_}&$6PI*yJ#;BBa zN@lM}k4u>~jyyyg=WN!v?KHFy`BamK^gpdTDg@3n=wE8_aW8`67OdP$ZkaJgmY3N86v1n1%0iopJC zh$@bb4i2!bS5Be@xgoK<_X}r<6E^m-{?~-` zu>s#ko2``9u-i0rbAWfO7;wD_utn273A;YCR}3Sb8pNg@?yZAaNkeR;k9M%yx2h>6 z*8UajQM1NG4;f%+O4)_yP4e66{FDyW>vCA%SaLd8n}-A4=rA*w?>;5fF8h}LA&m_= zZz?&}xe9fpMggvy_p(hHn5yMR zw7im%0t)P9d%Puax?6y2Vc<5r!Syj)F=bfHZ9Gd3aCx~P0EgeW`WJ};wCc1q#SNO| zM%Y@&peW|ondcD&+!hNmO4h5h2H8O=iZIm-F#)mjhc+9~Ifh?!_^2Rq_^I6IZWY!@;?RT>hyXTVjKUe|L9jj+ES)LoO@qT-XQoY* z(z22Sw{AjZ;2kuie0lwj+A|yr`nNghf+@>@lU{ti(yu=$)gM<_iB8C1-yIpnPs0~2 z%_2A$>|VM}GYoKWtLbIu(*|VO)pV{-gFdVb0%?)FU5wODr=^tc+ne4eWe`-9m}Ps@ z16eQE@tFwALtZe2G?D3>Nkj6E^P{?Ly88X=-zUCcgB4RW{Cf9d$o~Lx_50xh*#Wwi9ogt@pp5&`y!IBCr zm&3_FB8X|rs~l?E(5|i2TUlz@$FM|up+GfUbxB_ZEul1rNkms1_vX~g-nOU>XXrzgceR^v&QsS9#)9`(K+55m z@8Nw~-fR9rxp{u4`-Z3-1k2w6URL**a3Ba)#De!#6y$|7rk25Y@bt>_4(~;RV6oj= z4Kblf5UTsUAOV@kg%#mQFp%qw_77Bd+Q$|jGi6Z)4}>IS83+0*G7$NQ=FQr4D8CJY zC9&XL6*0vnII;g6PVb4q3xcHxM9z#fV{SdMpp(g!W3wp^{`I1H1z7#$i3J1yVw!5)G@BNt|22GGqAK0^e{q>1>QxAY&s+3H z^x?`0h7;ZSUCNEN({!GZumR?0Jsj%onc-{dQmOT!oGI1K3Rw%Ot1ng8Tna7EutdEB zH!_z?Q&(P7xBg0>PW;o{U%zkkuO9lFSpWYxeEsW(e(z)JHVy4N@{|Ak?cc0^J^rEp z^#2V0+D-rSfBs$6KQTmH?LH~fC4_kqN{7yXB;mW@34&z%?k!}c$a+&u65dq4YU zfBw^De=(MR>fKGhdG~L<^$*v!s}4iAeD7coyKaY$Wq*kOOaH1qSbC&hLH5%L?F;yS zIsf+%wx=vi5o||A7XQ0p=jNTa%zvcqzx4KAJJH!Xe#`Bbyr4X;{M3~r!=3J|;9$pX zSNh|uR}N&dZL6I!$xv5EuygCi*7ntb&*2|u`y8m{+bkGrW23w{~8_XDjv_SJpQNh{{Mf!ln|I@TWU+$*iTTuqkJ_EPVlX)E*FL2aWnoJUkGQ$X7N41 zw~FuY@#RzYQ*4tMm-)%+{B4j{ggF1LvnxEK_)pEB!Ji$#=g(2@T2#I&fBq#u*m{q&!nKK=UZr%%5TSh1&rF}1m@ z-4%^{I|pf=0tt5iZGCV;Na25iTZ;c1_#eXUsj_gq?MLy!5C8F0@U8FvIC${u{}_Dk z|9CUlcmJzF{})dL*Z$UrOMsMjy;1jnEit{<}3WgW5*af4d#B`+<(Ch$>r|<1lvgb z*WZ}$!Z!r5`^wyZ9t2g-mAU_n3B26h9K;?zRtl%CbB>jTQ`hb0cJ+y+g7~pAH#L3t zu@{e%o^Zh<2>Om4m)pZ5m_>vCrp&$K4EN`O-|MCDs@HLb?my}79x#A+ci*o3_?c7P zar#j|4t#f=9t(a;-r*0*bjD91PX)oOG0^Pa^1sSd**CvZAM|J<^grSK2L6xnKg9bD zW#M?+kEFqgAN)A@=68P>{PEXc3%>BR*Mht5e z_xHi2x4#m+zxR8F^UJ!v6=w4`-&w!;(;xiw_0zAPZ5*;xziv>U(YTigHRT~f@N)N# zASflb(NP)W`@yUzdK3)Ggr2XIvM&oRMR+xs@1t7qG5wxX5n&EtxPlo??xz?&nT4OY zQNNR6@UdgxHje?~Sorr14)>M9X%@egXNG_Co8Nr=@yCxH`?>|66|O-2jy*kdxC?#! z@h6}l`kj&g?}p)j;(|-ze`Ov~xG0Q%QTnp*uRZ?I<0%V;aQOPa7KJ~gA|CU>XNN!Z z_*cI2(ARcH;Q(3iIquUx^!P(x`N~)Rpy3?hpMCsm1b^i}gu%fIjrIA^P@mp{zv5u4 zNKrUMj^AgM`YV56b~9Gc%a*=8{C*3vI{5J8$6femEWN?D%EFhs^cCU1Z^^Hy2!F9G z{iiMbvt}*_izxqid3Z`8)eoI3{L2<_)j7j=D?IjzD&I!YxJG1=%&9eX1bB6Cw zc$`kOc+1aB?_m3`bA~(E-WG+Q*?tFGz&vyP9c({vR(RMyLslzw)8npwmHp%Jb~eFL z{uTZ2@b)T&KVj)3{4o3y)fa5}ea+SHjBxAoY6}k2SKznh`O&uzkALkUa(~>_e}x|( zetaoCuvM_n|LpMFAOD($pbrn}iyI##uTmhtbA`XhLc{QA{D0r7j`6#1A3oa$KMo7P z@2vFeeYjYF8Ny>P8ijkpScDnEt0MyXUuI0d{aoR%tg>H;e*cZRuMgqF7b+4Fcx-3U zf2dUXFPt7;hjj{nW#Liqi6HpRFx-l;NKx?XuLQyMQMju_RJ8oZ;BCsn&$N<#5VZfV z;tyu}ov`t0u==@;FyH^Ly{n0>>!`x>?B}?I(nKOv5Jl}(1ya(G@M61F8ibOHHo^tc zh*TxrfF0X7PF&mabBIzFSe3e=?S?ME=@z8sxk$7Kfnpa$f(4>ZRl1B46rq5!z_0D1 zq6-xG&Y3wgXXf7bb3+zIcwT(x%-r*xbLPyMpL_4SFCSS62i~{&mTNZezi4yX7g5^C zKjwb8=2Jy3c@O)}9hQlXL@p9hQTtAHo=#B$-mHJ{PxJ1Tf0*Up z-!Lz~{#SGQl`CfSrOW24&tEsg&s{ZJWwpYonwEtLjKo}+fLj}his?v zjq%L4`tDB5h3Ee!0>aj~kgsK>O!tRda&$OxkXz7Fy`Lzqx82u72glk3;2(9pfQn?k- z5l@SAV!IPU0unfGL3sZizu%{ql-fXE8t@GFf5ACW;YUEbRE+IJ;bgU!k4O8+Wv^RUZg8TR6+dputw%RUqmXsr6wS^ui+QEk5VTWx;l z_Qzmz|9kN5Wq98+HZ z)wcM>Ae^ag@win$4p@yk9};r-^#c6>+qCklM7^oHi2(I>{1xB@jXa87l2vv0l|24x zPQQYydl>{qs=Ap7BdF2V z`14DYMp7`!2_Dj}D7I&Eq`W<{J7rVq( z#bOxi&*8c4OG`iTQcWeqQH&?|rFc>QS&P@Pd-fLaI(FgExcyz|&w@n{ z-vVC8F5sp0D~D{q1-zbjpKgoKk3aIij$MK$_IHe56}z7$c$xTZMDs3Uw>gUsKMPIm zv4asyder{*>yHxFFY4RkqxJK$nkmgN<7r2s^&|YE^)JHzNo^Q=*?f4f4W0*pGWmjv z-Fv)x_q2sQ6R-ct{-yGpt-*a$glF}U{nq`(`=1_VKF6+wH+~VMCi@@iz+iumGXDXu zz0r6x#$)>+`hi#b$DUw*<*c(E?pwA`V^~PC|BLZKjp@U%k+jlUKRGbiukiZ?4D|_~ zwr^s8D}3cbz^}B!qX9+w`vZJA#glrkzXkqrj|V)_AK}q}0{y+-e1gY#Zob!FjK@(0;7pdHbvOBF-vL?6>9z`oTkK3Q>Z?5O` zSAM{#aA;?L0p33)6bWtd&7A%(3r_NK_{v*?bNSlaZT#QN>Axd^uav}pJ;AS)!}rAI z(>=6O_HU2ydBP$39Ns8oBCo`2+@zqAsNgE#5>tDJ)rt4?AzS7GvAz}UfFVojP^C`R$suR8C zvURKd)*-z)hgah>TcY>Ddd$ItwnT5q^qR#*SK5KCIK=!E^0xJZaA{lr5U8ijQS)6K zA2Z(qHEfZ9~1N)<>QHS>@&Wv1~4 z?68@^Td=dt_j$JHNt_);Z5`)F%>wvlQL^cm)rCzY<0$Iqac0I$7Dzh6JT<%X3{Z(H-IxpB5D+M6W*o_*imSt_k_ty zBy|es>(I4XSzCw1Ief?>YDtD8`EJ}H$Zw;-r>*%SYU<2;8k!a$WggPWnzYqoCADe- z=f|My8McZfOW$Ou{T|L9M^2n%DDJ@=H${q-MNvm>+zU;EW|u+@pr(eJ)Q&^!O^TE=tn(BwgWx6m$l@W;`yA>R zv`}B#sLaeG+`rW8Q>>NrO=0XDMZN<#iJ8>Colf32ftKpFD@<^maKBzeZ11&;hP!NXW&Q(?q>4!klOJPM9FEFmw>K~EU_ zf+-qzMg2s5gWsaS-zSy)ryzeG8iL#h!AB8M<9rDHNi&5(RDA+Cnw=IHV@FbGh1jzP zy*rH$rC0IZKK?5h@K2(()9j@=w4GWr$^Bsp>L?z@%ue`m0J>}F@7+udaAb>~482a# zbQ02O%-RS{`*_BU;N9?^<_ek8(g#$sJtewz8~2$z(MD^_I3kH` z30~22>Gv^C#J9#ghnPxnX>SDnUBFK8? - - - NLog - - - -

- 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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). - - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - The assembly that is trying to load. - - - - - Class for providing Nlog configuration xml code from app.config - to - - - - - Overriding base implementation to just store - of the relevant app.config section. - - The XmlReader that reads from the configuration file. - true to serialize only the collection key properties; otherwise, false. - - - - Override base implementation to return a object - for - instead of the instance. - - - A instance, that has been deserialized from app.config. - - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Pushes new state on the logical context scope stack together with provided properties - - Value to added to the scope stack - Properties being added to the scope dictionary - A disposable object that pops the nested scope state on dispose (including properties). - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Special bookmark that can restore original parent, after scopes has been collapsed - - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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). - - - - - Process exit event. - - - - - 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. - - - - 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 the wrapper around System.Configuration.ConfigurationManager. - - - - - Gets the wrapper around ConfigurationManager.AppSettings. - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as IDictionary-interface - - Message-template-parameters - - - - Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - Internal configuration manager used to read .NET configuration files. - Just a wrapper around the BCL ConfigurationManager, but used to enable - unit testing. - - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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. - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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' - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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 - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state for ScopeContext Mapped Context (MDLC) - - - - - Immutable state for ScopeContext Nested State (NDLC) - - - - - Immutable state for ScopeContext Single Property (MDLC) - - - - - Immutable state for ScopeContext Multiple Properties (MDLC) - - - - - Immutable state for ScopeContext handling legacy MDLC + NDLC operations - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - Thread identity information (username). - - - - - 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. - - - - - - - - - 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. - - - - - 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) - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - - - - - - - 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. - - - - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - A renderer that puts into log a System.Diagnostics trace correlation id. - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - The directory where NLog.dll is located. - - - - - 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. - - - - - - - - - - - - - - - The executable directory from the FileName, - using the current process - - - - - Gets or sets the name of the file to be Path.Combine()'d with the process directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the process directory. - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - 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. - - - - - - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - 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) - - - - - - - - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message. - List of event-properties - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - Fluent interface parameter. - Override the default Layout for output - Override the default Encoding for output (Ex. UTF8) - Write to stderr instead of standard output (stdout) - Skip overhead from writing to console, when not available (Ex. running as Windows Service) - Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) - - - - Write to - - - Override the default Layout for output - Force use independent of - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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 - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : AsyncTaskTarget - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private async Task SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - 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 - - - - - - - - Override this to provide async task for writing a single logevent. - - 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 provide async task for writing a 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 - - - - Block for override. Instead override - - - - - Block for override. Instead override - - - - - - - - Write to queue without locking - - - - - - Block for override. Instead override - - - - - LogEvent is written to target, but target failed to successfully initialize - - Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 send the log messages to the standard error instead of the standard output. - - - - - - 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. - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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 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 activate internal buffering to allow batch writing, instead of using - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - 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. - - - - - - - - - - - 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Sends log messages by email using SMTP protocol. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - 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 - - - - 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 - - - - - - - - - - - - - - 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 in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - Force 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - 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 - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - diff --git a/packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll b/packages/NLog.5.1.0/lib/netstandard1.3/NLog.dll deleted file mode 100644 index 2eb2202b5e82383e6cf0f6078ed448868c0a25e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763904 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
i1&9uz6n< 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 lCtx(H<_h5 - - - NLog - - - - - 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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. - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Pushes new state on the logical context scope stack together with provided properties - - Value to added to the scope stack - Properties being added to the scope dictionary - A disposable object that pops the nested scope state on dispose (including properties). - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Special bookmark that can restore original parent, after scopes has been collapsed - - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - -
- - - - Gets or sets a value indicating whether to ignore case when comparing strings. - - - - - - Gets or sets the substring to be matched. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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 - - - - - Process exit event. - - - - - 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. - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as IDictionary-interface - - Message-template-parameters - - - - Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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. - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state for ScopeContext Mapped Context (MDLC) - - - - - Immutable state for ScopeContext Nested State (NDLC) - - - - - Immutable state for ScopeContext Single Property (MDLC) - - - - - Immutable state for ScopeContext Multiple Properties (MDLC) - - - - - Immutable state for ScopeContext handling legacy MDLC + NDLC operations - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - 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. - - - - - 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). - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message. - List of event-properties - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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 - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : AsyncTaskTarget - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private async Task SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - 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 - - - - - - - - Override this to provide async task for writing a single logevent. - - 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 provide async task for writing a 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 - - - - Block for override. Instead override - - - - - Block for override. Instead override - - - - - - - - Write to queue without locking - - - - - - Block for override. Instead override - - - - - LogEvent is written to target, but target failed to successfully initialize - - Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - - - 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. - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Writes log messages to in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - 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 - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - diff --git a/packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll b/packages/NLog.5.1.0/lib/netstandard1.5/NLog.dll deleted file mode 100644 index efd13afb88da81db7c8d3dfb08640550ede78e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809472 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 z 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 z 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 - - - NLog - - - -

- 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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. - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Pushes new state on the logical context scope stack together with provided properties - - Value to added to the scope stack - Properties being added to the scope dictionary - A disposable object that pops the nested scope state on dispose (including properties). - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Special bookmark that can restore original parent, after scopes has been collapsed - - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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). - - - - - Process exit event. - - - - - 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. - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as IDictionary-interface - - Message-template-parameters - - - - Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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. - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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. - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state for ScopeContext Mapped Context (MDLC) - - - - - Immutable state for ScopeContext Nested State (NDLC) - - - - - Immutable state for ScopeContext Single Property (MDLC) - - - - - Immutable state for ScopeContext Multiple Properties (MDLC) - - - - - Immutable state for ScopeContext handling legacy MDLC + NDLC operations - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - 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. - - - - - 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) - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - - - - - - - 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. - - - - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - The directory where NLog.dll is located. - - - - - 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. - - - - - - - - - - - - - - - The executable directory from the FileName, - using the current process - - - - - Gets or sets the name of the file to be Path.Combine()'d with the process directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the process directory. - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message. - List of event-properties - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - Fluent interface parameter. - Override the default Layout for output - Override the default Encoding for output (Ex. UTF8) - Write to stderr instead of standard output (stdout) - Skip overhead from writing to console, when not available (Ex. running as Windows Service) - Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) - - - - Write to - - - Override the default Layout for output - Force use independent of - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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 - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : AsyncTaskTarget - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private async Task SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - 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 - - - - - - - - Override this to provide async task for writing a single logevent. - - 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 provide async task for writing a 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 - - - - Block for override. Instead override - - - - - Block for override. Instead override - - - - - - - - Write to queue without locking - - - - - - Block for override. Instead override - - - - - LogEvent is written to target, but target failed to successfully initialize - - Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 send the log messages to the standard error instead of the standard output. - - - - - - 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. - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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 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 activate internal buffering to allow batch writing, instead of using - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - - - - - - - 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. - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Writes log messages to in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - Force 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - 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 - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - diff --git a/packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll b/packages/NLog.5.1.0/lib/netstandard2.0/NLog.dll deleted file mode 100644 index 8c62fc2271d8a9cd23e0899f1ce30c662087a072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836096 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

w+b3%3`Hdet8mJkZRxA@Ov6fnfjh9h@ixH)B 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%0AI{9>-0BDtJvC^Vt9Dh}YT=!iEjUw( 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

J6}x}czr1+;ai6r2s-)*R z<=5l#;xDUw%kuZz6ZYq;tniZWKMQxP_IWJ(sOPs=p53za%L*s!gZ}k4(f7OlbpF%u zV&899{L6Fw;euoC%i z`g@zQ>#3wio{Qi8yZNi%8q*p3zU6rBmX)4fPk=e-x2fNU`yIxReYE>${rR!%x%K_& z5yrlPx**($NQ9KfuP*o_1Yi5$i?-SS6TWO*T?k2|Ajt-Zt3}t*g1M0#qYOs^L^+a zRFm{~E+O@(cEf6+_7A8l`;*-gy>?`$nC0U7?Ml3U*RLn}_4}8{63%TO&jrXjpg+7@ z&;1<4U+TTsB^UO4^m|(A_YRR$Jh62#u_N)*d^@1ze1gR1cgwT)PxU2ydGW~lj->l| z!--y5u9Qnz@uNTXOL7i>GQ1DFS>%5EW!aPXME`j8MBnfJ)9`+K!jew;KK0`#vAu=V z=la}mSPkTTK=Kc=f2hPicNeu!v3I=bJYK!ZyuVPMKIzH50%h0t^6aeV^<{E{Y6G7y zKi>TL+nt2-yXB>$tajkHBhRlad!k>K+#MeKuP@G@u_x@eC+QPc z^!@4bhdXw9N|&=&FLs{bWLS5{`P|pf)AN!0BpY9V?J=k__#Cv{YxXsq@sJw70R3U#u%lQ0 zO9;8NTJPie1`wf_uv@V?>>y5{qKS`&!63(A5@ptP< zda-;_jx6K!-MrpM=?N-HUpsy8Gn`!3&m*K}@I0#8PJC|g{mn+I=a1B+d`oVw6IG}@uhIL=rQe^W-KF*; zJz1Yf)%}@#CnqlKhcBmcdawcMPt)rkaPH_qOn0#4zIQ)Mx+e0ur7e$BKFJ^UTeV%d z-&@O}tyM((vM%pWxBuL*UtT`9)Ab{!=N&&~ye{q1d1-iW)a@&zjucQixStoMo5o>( z_?W+(510KGIyWBX?-t_Jp1x#P*2U=jy42^e?!R%LePXs(kIqfPed>CBJ9eIu+E;~A z`nh8;Jlu!H_uff;I9}IZj#Xcv^sLt39|o2103H{_rSGMK>N9xX!T5U*rEqgK2bAbF zfN)s9n`;;PHMT?Nh=OXU?$6-dpnje~^@d(=jIsP*0M)0kqV=FS^*HO*s)X?dRZo4c zCd78ad=EX`v-lZ^;a)(|mwOZ_KDZBApU*69H~ujUN8>1_fBS4=f4R!}dpUpPl?T<8 z(4KLg+6c~5pgol1I7Ii31r*-@iab{LJ5ry6+8_1lepvc`0GY-m_&z9&>^0$a4!Wm0 zpkC0=LDnB;#jvWxkV^PVD?`$qgOJvUeSbve@b z+%d!9{vDMAHisEo}5SaDSbh; zd6b(2>i3g~$%XbYfZ~_`o$$6RX(y#!S&yJ~h=3x7b2#J3KK5H!e)9i6!kre9ob+Ja zT1@f#<-!tP^l82mJI^F~VprH7&T8k4m*gQO|3@U@%CfUm&wF6})pml4^k5w(LUvz= zd|-Z2j_nQQSZ_sMo_$GgJ>4!~U6K25VTqsgf+h1-2}l166X5@ef%X9B+wnb-?xTl( zTAu@hG-XhF$(4Q}_8ueiP5-=9{3V>QxMG*m5sP2$5%=qf9jR|37x$mVFXbRErANjE zbiL&jQ1YHF^J8)M>-XxQqW9a7x)R>QG5osw-0dc)%6dO8@BO+tzwhGvJ=zr(SK1lf zt4sIbqn_8_&v0J^pTCuL4Jl{3w-LTO=lQ@Fd~ckr-^h4G?+3AYk=(ED)r;*Xh<$Or zdLeb;461kHpUL?qj@hC6Bqg6=z85kkmwQ1|IQ?Re{9}46U|xasU)HHb?>%_mbo(nk z?++^U$8r@t`QM?kcxP3wzOc+gr5x#A*4R18PxySY=-tcn72*E+dkxaZ`H-Yv%9UIg zN6(@7|7e9S^fcN|h{w^e%7wgOe&~EoP+h3ct;)JzP~D^R4gVKV8TG;{PrK#IW!;nh zM=DhE{}SHx1(f{H46Vj!G6BxM6@gYM(jR&={ICtllMD` zPrid97xoGD`2qPq4EQc8i^|2&ZdhgXqV!3*(|13i5`VEH-vf!eScivuAN0Bg+@EwN zrC0g`aixA!JqxMjye=s5`TZ#z+{*`g*p6g=1!Pygov-vjIQq}aSb{As^6#PYDZPS5}2O428Kl0GSy#k!paOTM=hdG#Hf-p=$~ zWZWSCpjxpSLXJ}(c1QgR>TB-zE3m$_maN9s=t0K#urqJc|Ixksr}V_mX&@fPjTtKzT;0ndXP_@-*8EO zcZ|Sz;M_@Tick3B-!L7q_EVO>w;q))f9dxm{b{;TKp|uK3uo^jmi0tQN8U6_hp<0gV!v-D z>B%~I71jqKe!V_4ko;wx*6-3i$Z{`MNG;>}tv_9o9)Ent8;{uYm$RSCDtFP7 z=USd#dCyVom8U1^K3-SWoyAT3ipsw%_jv98Q$2sbEBp!f=VjTKbW483#s8ne`n3V> zlg9m(zv5y&rT?#@@W>b*-TtRj{U#UAVevdz=83{Izm5I>jO@>RRE_L-Ii%h@?a%zf zYP)ef@;J5B_UcK0yt_K4JGOry{xW};@}+gsfcmf^<&)lHWuH2r??sK3E8M%y?@f4r z8T#YC6wc?Uyu-&Wr~Pgz@0eYGIeW|B|2#^wyZ|2bFCb0z;E{|}Jt*96rLy^a}B9rXHZ?7Kf%hxGqHE$PMd>Hlg= z|F5k--IrfQ>9~paziR1o6)>-7f4_ctEa@W`?lItTG=CR84_V*+9@d+&9msd_vaTxn zvW`UmpBhwM^nP$ijpA|C?;mbP_Q&h@6_^k3z2@uny-PuLUPH>K-xaz4e;`lM`ayLj zhm(FN%KJ-~=yD1wDlfPP;6}6$|I08L(-A7kw?ALPem%N(7v2kaJyCcl?~8dk#PNhn z;z7B4UHw>${U+Ig|2OufU+l}h4gT=Qo4>N^$0M*`j`90le9qWk(LHFgehB-?aDN7l z7veAJbC-udzmh+k}q24q4gmw7g~Ri^&(my!ScV7-&-V{ z|D1*UoCL=2wNu)z^xxF3g8cug^#7N5zCrTkm!sYC z(oYQQ;`+TSp#S$8LlTEn#YUu0dO;3H`nazo@|z};J-J^8@B4B0M|A!W#s?l}g#Q?Y z_CsphvlNfKPfB{8)Aa!M`}w_(82UM`A98PxeCPSLUM~x%t9~JS>8X@1icj`4W83sem>C5`x zh1x%$Wc_)#UXO-*wDkNP?p^tm^nc-VM*VfW2(muZ54MZpv3<+`FpIqvATRA7P#<%= zbdQqsUvNHT4C!}a0+-}96o@?y8 zbJBx0ThSYz3F*Ofh`*e35dAaw9D#6IdS&^`{bCe8Sn@wBf6gKGq@FJXR6o7$1@*$i zv2z<}2g`pu&y!@FAQ#Sk@NOIs6Z6@!)t zX@g?hC}~Z1v>+IRqBV+MrlNiR|9jjsF?4%%?{{DCm*?3Z*8HveFphJ~F~%Ho%(cAV z7d$wAd-F`MUc7Lg?2W%;Wl#TQwBwtj>3id?W2WeJbm%zi=)R(V_5U(I&M(;i4eRrx zL;YOSc8jeKJ0C{>ulq#*tMkS$n-^QXH*ZD%_1~Bev){M=_`hYn9~?Wc{m*2cS3BRd z{NjAlYj55>(HoyVd7iwV>dH9HcrN)Z>&5$hR>#~c;nM&(3^!>3a3~@8+K`zi9Jq_ca|lKjnTQZy)l%i^p4E zvGIBPo4ntZ@%C4`#& zJbo8tFFvol-gRX49Ou0JdF4;n=T}=byj@3kji;ZW^Ov#u&t%?(=j1XkJm~Mu`{t_M z&hHM|z4>0lpIOd>das_n{_4Cfv}3-i^YJgrEXSsw(vJVA7dWMdbRr#y>Z5GhOe>dB+0zer!xK@M)wa<&v9in{_lYObd&z?!Pxk{ zeT<&|%gQ(VU7L?fgsute`0IsR@Qk%zBs^$8RFB_H_^b8%<3tkk10mio5xVBhBdN#x z2|`Epj{aWh!S%c*t!GR0yYp>**xxlhC|{@d6DMFFFzdrB?>o=g^sWD){U-CZMfa&P z+!tkUpT@uA*!5FyerSpHr=5)VU)N8Q{zCo1{gsaF2RZm2m3@AW_0x~(=ji`eU|$jT z4KhAY?>%Q9E0;Ccdb0b9{x#g8{*F0a`hDj>yq>))h4CERKQp$xHvNP9Y`(0#W5c~F z>rGz19CN6Q`*W!`zp>#kKmLI&kGIb4J!gJj+tsJqj>gIl9bvvt*`QZA_m+8IdJo9U8d|#Z0{%8HPS06V2 z_}{;Jh6|V@^>>ZD{WsOJ4upAEwH;5q|6jNBBA-dS&!*?e_V>{a?$`44<0O7>e(2NR zQSz|-rt~y&E|Bha`Cv-j8o3DHCjgOVR`%bUjjg`N$ z-sa1r_kQeHjtw`~{xaSd;rMUw$ML-ERV#b-R{j&pKDE35VjmlycmBQe>d9lxym?;9K}zgJJ*ymYKQwtaq?oT$%py?DI+hF<%#;n4q0 zJ+ys#?b!QY!?Cj0f4r*ujXZksdi2i!SbG2a^nuRPZU1rb|LMHz_sjHNe!t&u^KJV} zuYDeDmtWSN$A*9QB-{Q+Z?*07uYX{?uJP9QZ2k|vH$7HPkpF%0p4S|FuirZ_?cZm7 zxXuPi{ExZh`(V9$_o-e!zKouqcV4~nd+Fcnv*qyK7xVUuwcX8hv0p^!Kk(eRTHd?E zb4Xp^;Q!q*pUvw@NB;lri?a7S0``3xybmM&K7J?ZahvY{+F1_=f3N?)TR&sROYgmp z7i4|JHOKba^Wyz3mDi5{DbK^a`yKqQ$&>bccl?Oyy!ECpUk3{5I$pBU%Dw~XTKz%UKDWfV(dU<5I{y_t*F8Lc zuYNs_t!GdFn|Zb!6zFrxf5#K#IkeY5ImVNZ(*Dhp?e&l6S~`F5elNkZd%uh3{XT;A z!#;$^4sDm-@6)^+`J(>dJ|*w@66e1x|9?kjh*7-H#P(3F@q52J;HBrypS|^QJ0A1N z(V_YA>iy96fAD>8?>YPDaW>po`OmVy^x*UI|G(w2?b$1rx9{vw`ODYq#>V4?xBT+! z!W;MO^SFcmQ|VoAW9i)|dGzdy^!?y!p=*xO`G(gIc<0X>4?UJ0XZtyiW3PX2ev&+q z=j+Sgi}L)&(tFP1&GY}Kvb|0Y?sH!)*P&}>>GOae-^=p&%x!1d_BB@a+UJ+?res@A z{*DBnzoaj>_2bo_SD$uY$HDoFtvB!ggAdX>KZid5cZ?U`*mh&rgYmmMl{Ww0eAL^o z=+W+H^xkjv_Ba05<;{4$#Cgluc)WJuwae4=K65O+>(`^_@6D^cc5uw$_IwO{+otEu z<30Zro#%P<>T4{${WjinN>BFw2h9Gz4E7W2IP1yYy7yRruiqa_ufMU+)xF>Eam@d% z`f#p&&hK5H-g)_Cnr-**$Ub++c$}GKuMh8e(t-OMea_*@-ueGBdi|GY_pV1f{(1K& z|H}WW-`IKAq4N%JKd(1W!0$rI_;+xe_Wn1}8@Km7W81GMj~$P_`NP=pY-~HGJk>mb zPpio>+sx^v1)nGIX*Fkqm7l}QU;Z60@)nBz>PX%F6P zTKzYhzR=BxqZ;xZrop)b_D0j}G~@FqKEE*Y%rDGN=a=S8yobLI+=i5%Hf;#oW?KBu zA>42A=Pez^?{=8^<^}VF|0VOd{}t$7!FNodLwG!e&*OeP#tZENcR~MG@UP%*d|tz6 z0G~JU*#rGs@_E9)7aWq$6aKfsckmgO&lCQ4!T0d_J3jjmZa?@bKA+*caa!?d@%x;| z@p;1U2k~l0DB!dQgOEe`MDdBoClQ~CuxH5U34bP-?Ob58o%8Vd8a_Ln+0I2~Hh7A2 zxjDtT0-vk!p*+u=>ihto+ws}yoaWqTPIDf_=N^1^I`f=WW}Y+IJrjA!cea_Y;&Zms z>@URU949q!4&(*S5rK2T3-Gzv*=>r!%ka6}Ssu6?ECEZvQs<^XDZZEDdl|l$;d_~U z{~hG#@!9EI0o@hQl{?Sjv(72U_X?*kc%?Il&t809FjqQ%z~@+eb~;x58L&yeHWjb@LA#8jL%Nz`@Uz)ExwV+ z?Y`&C?eMuBwjcT`@mc5m5Z~|cJ&(^$=MLEKfbI_H?)3c`pPkN~zL&vu;5M_`_g8bb z?{#y(@A%*Y_|)U`AU+S_v(ER1Y4p8^&rYY&_cpi=+-BDMJ}{dR*JkK9Bd*QRZ-)L! z=$?e`N$8%0?n&rcp=*V%6}ndFTA};3Z+ox@dF_GR1NkMC^Cf(L3E%(d`wc$poIm3G z4&;3YzVE>Im+}2&e193=U%~fR@ck8h@AdhdUc}$)`yAibf!j>PT!I}JSmzf8Op40s z!ZK7}QDOV_Kl&h3$mG#Q?%8kM_^o`8dai&}7n11Cx zVX}!hv`;fB!bCGm=-}E3uIGHJU*u%7Pxbqij?b2Nh45li!9Z@jbVyN(&>t5AKF`qipDqWP?IZWu7;Hea2y30&=K zaE`#6=MRCJKS%T9+z@5C8ywBAWAj_*B;n5ew@#gtdOzw1;cUL^oV?}u6+MiGHh(Re zZhgqscdzPqtA12vzt5H<<}172nB(28+72S&4!q%Zxtr}{K9{8SL0z%|7l) zWA;IB&;Jh1$EM(e*s1Zch97lP!dGI2D#^b<;+x`64==(U#B?wlJ8sVPuhIHkDE4do z#hRZA-!N7-AN5=PbN(f2uM+;vUn|__Un5Ko)CsekHImP&K!eY=gEgAJtnhf8ogW3V z!uN&IE(7ZWjW~~Wkn2#M2Lj#BzC}2%;1=AWZ3r~`{)X~pIn7ee)uu(_$NM%ud%l}h zo)xz3w##>3t1&Zz?Z(!BkCvm?XWP$imFI+S|Dj`U4$cY3VaMpo;GplAHiLFP=sOwb z3)he6HwBluGq3`7w@C@Jy}krLrjz9iYr4aFo<|PQp69&q`304RbR=KDd()V6A}zibe}%hma4()1ltgU%NHe?4ZBh>@;a}p; za&9Cg%=UR-q|DEB(u_?n*%U~*N|1gx@_j|9KR;>fmy;8swHhwZVgGSlbfccP9p=Rcai%_wb$3Ousts+;VW?dYNEDY(s2E- zp6`fS{oTiZagjBS*#W()Kt_?b&`_Kg;5?HQto)f8f@%B|arQ zx7SGf`w;!c=J=SN-yHGliLZBRq`$3qPQJ&O|A1VsOnTawz46^{1mnW~_yUc$P}<)V zf4`(Z#lK17izK8w6K{3Q1d!MJk>EItpBW(gr5On^Z6^!-wx3<-x7SUv#=FQl5&5i0 z*cUz#E0=d9>~L3}!g|~v-h}+!m(ZrN?e`iIHn}dwujYhB&h=lRUxn81ESbkm@mEN^ zSx$x4cbof5~9mBUsV!rLSn7vZ;i+psg;ok`F)@VB2&M6;b92mdLJr-~B z91rfh0&j{|R^$qB7vkH6aVOdIXne5GX1|dYIaRpNWj}HYLfU?~SIdv+0f?+eBU6CUHd+V+E64jUijbvidPK4|ABDdDTJL%j2_QO%cM?i-f6 zqyCTZq(93U^;cqCS#A6QJ3sXY?EG}pAHb8N)u@N{3(Pil0`=!8P|%)j9|R8p36>k2!5bDRk$WkufIhIvC$y zkj?LmnV4kH%TY=74#%abNqLdD-!s0vNZw1vd?l$c!g@YCDM`wK`%FLQZC53w25dhx z%Wv=FN$P?k%s7%QZiR za@{2!Uhi<6+>u-xu;WXugkNon^?cPzdRb1ryBy>2%)>#v={NiEMUj6l)7^BCHZIilX#jQJb+ttC8v_0CM> zm#oG06+2=@#Lk1(X!+Iz>^QO}VDD#F_&>Uf*Ta_mqok_T#e#lqv{0Z}-oyZUStN#Gc$2dhj^LNO1 z!nk^8FZl5hcAWYQ_Sd@#UVBdbjf? zrc%GYgd0snIrx7>nS@7*B!7v5a4+HK}xf>xAgF{8}atp zkuB2R)|pmq-|69R;QIP(TzdE{VVnPPAMR6+Z1d;gK6!4W&7X?vgeiZ42FlcE$S)&O6>cvM7=hLw?}Te)J>6&-%mqkc3M% zZT`tf$3Lmfe<}J0rk^pz@?7MD_N&mZMPdIK{a_;GpQ9Ze0r@e^A8CIJ`dh$rS6yYsfJX0eLtf7Wok;8 z>p%^uLsH+*rjBTP8`1oXNPfEAOv%q{?lehvA7q=a5vjMO?n1r4hK%$kIqL%#)p7m8 zj=LR4)%w|fSNpPqY?m`ra&#V+9&UZzn8`<{hx0KXoP2b_0sYlY=qHYDH|$4$aP+XQ zpS2ra&&%SwjO|ameDhA_dF}H3u9f4fUFUfG=mipwqxY+$?!urQpSp}?vC2If@2IXD z_2~Fkq4_9w?S1I-pzTL?7~Ze7Oc>O4zAEtxn6|JTFWbTs-e>>T7Jlycme*rEr+g{O zd3I8*_%C(WC^t&`PBgVaJ11-C5dK`~KRsrL#Oq6&6)Hx!L{q2bY*5Y$ z?ODwERjtO?EahGn-x9R<53@pTxPHHt=IDLXtk6%;&sV0^iT%#B@zS1u1s>MQ>uh`= z6-+kc1Ir{_v!sI>)byHz?1z`S%cT9il4jYTHcR3e0v~+}PutV_WnB43TA|DKYSLRJ ze89Bod29`S74wMIkk1FRoJe>*>ib4_xz0CRgF61|^--ZL)^=N=wEgn@)OLx#Br>G^ zPnYJqD_GLTacWMu1W$Sw9&6Xj79QKB>2?JRkp8vMUyF6Lg~t{KKEImnvoKKiZH|XM zn(rR3{ps~EC(L?iLAdd_Z)rKUSNx{%_76E^QGl}yFMJ#_19pl7ZnajdtU&j9MFVU_Z%}fa=$~?T@ zng2bkgTwEB=zpJC6sg4<$+su3k^bh^aB9f*f2kqc&!mKZjegFVoaK9E9olVVSvVf! z>S2>>!Y830e=Vsd+&zn25wZ8Et}&8gRqm#%!3JDf!3$ zn1t-SATwm!OJ>OS7b)Q!^iR`|o2KPV2`|IEA@4XRE))IP`NyUBxejqVcr?bbA03yi z^`0HF>)|bry` zk*<*K=X+G&tMPX!)5DJ=+_vM>!^h!z*>(JG^&3>XtOKVfj;s-lZzN>zGe%we9AYG7 z=TF0${;*eWsgGO3qgo$3!rwd@_a7&WYP<7??fLSD?fB&n+j(RxY}-YW%x~~}|H7IR zGIiYp`CY|%=Ctq|4?Cv)glXZu7@rcN)57+8ord*oW41!y1Kw?>g`YYR>*$aXv>cwpY$6e_7{*&!qjQuQN(uy_&~QYGr@1)g!Tdk z;Wr<=0dhImi1e0Bwc}aUR40z}!XH4-^s^kxA42AMH_6G-eCLF1Ka=H5{M?wArsk-B zfe`=ys9dP^Q!MLv>r6%1Ue5)(j#;4VmP@pL?Rs+k_~j~BX?VN7{o=G*iFb;Bjj~Re z68`iDydGAWeq4`pBWulP!XaPVkBm8bdP~xx0x)|Y?q34C%&KSb7W(v>z!2txMaQoV9KO^s zWz*LN?EOxPkMqR)rrULbN2c3(=FjnPz_!P3xvymZd<6Qx@h5ic{f+I9vQJ#&+lYSl zTPK!D|5Tytu0K67-Q_y-FF~GO;rvl^DL%wb&6Zd1}3W=}VsXLRht=FZK7sYiyYs`5w7Dd8O zIatRS@;&+<>wA6R@RyDG#*Cs!6x=r<%lYl6Y+qTD78{m2o-C>D7Ad6?v)KrG7oaDgG|i+vg**XST`sc=61#xVvzFI5*;#_18Po zwgz6v=6qml;Nu6V-x{#v)#AARU07e4xhxJ_M9h+zb{+TLnJGHnrUXvMd@s?Y1WNzI zn03(SV}98TK7e^)vPlnc9{9}6^gtHo9oxVUwj0x9dBzc3wIxR>g7rtDiNh=WA_T4z8D9%-Run2K{#zSPuCG@O7?tBHSwo_x`LQz5f`J`M}4s z{1MxK><`%Ry8^#}U))Li)Nh~oC7u*hKPOm?>wV@)Ba+|M#tHsoC)Tx2S{%0m*U8sF zTkm!HT(jPZ-*3#7C)xQPp3sDEJjpRPowVO@o&AR($Gab&G~VBGKA#(;hq(^+$Vm~M zSB>|x9-lnP@i&yCA3teR9LJ4UPHKz07y10_Nl7w~z2|l)m>jdfHb1_fsLb!y7*$(&nUq<_R|K$Dt#h8c9joA6?&B5%5 z9p|zmcRz?<0nE;c*yj^DkxSQ8w)539p||5kc7*q#%TjY9_W5*n#LlC##g2C8Tkv(P zD`ltnxQ>MTa9{Q~UXQ!X?@;c!kzHn6C!eE4;@ID<%`S-Od?~{I`OdV38qc847m7t5 zbt@wFKCSow?RZ}tvGbJTi0v1PBX<8lh1CC?xFu5muer-3ww*7D*#4tf%Uv9?_n*a) zd(f{%XBTU@V#(LCc*HOFFBJ#UvE{AMau-L~PL4r1&Zno%uGMsEr5^Vo->f(0-{yBs zq#WmMPh6eo17=NR^hw8DJ9|x}@NI*A0Cif9hRBT~H%IvV(%o0YIy5E>JG)Rp3pCAz6T{9 z^hZ*^lN`Igg?&cS-#lhUH2kReP4V~2K7`dif1GVcvAFN1;n%WGNs6=e7mI7U1@|$h z#Nx&ca-NnHXX`OF&bI$lNq_dt)Ht5+Nlxq#{iqv@v+XK1&Yu6&IDK9hXX_y~&fZU@ zO8$NwiNy_{%6&)EB;EkX=hAl}ecLZ&Yk6~2E{L=J-vY@$p5w*Y_M9#G!TO7ymxWrM zV$FYr`cXOB-$P-;%s}YQayMR-qt&z_JI6QrDGmEwJL5k z*m-KL)<><@gY|pXt(E+DyK5x>ueo(`_ByMJv*Spu=4(xyz3ytI-&_`76?Zk_9XNHG z>}y(zcaGu*cZYq>GVK=LmuAWO)i>wZ`;CX^H0ya-5lK3M>$@u=Hws%M-YNc+ z@Ne(K+nT2pMJD5Z@B^%G&Jm`BPsM#?YF4YZ54%2kIQ;fv+&JpARtaAcX&2(oLF=ze z>#s-atxM~xUGv?pk;x7y4;=bq?r==W_&zg<#1^%z&ek>9BwCAHN*o$=L zM#_TRM?ikA@gAY^J|^*&1s6zsWx?|$p7dxC_wyJzf=|kQ#UfcxdhxWB@DDM6@`2oE z^taROJng8t`@`qwab9lc*~iaa6t?s4Ra)Lv!K1FjbECPdf?oq?gU4a~!hJ%p5KK0! zf>&UiddRmbcpDgi{5JHI6Cbj2!=;YNK{&3Toe56w=e%uI@Io*V>_WZ@p}*qqEbpq| z17Nb*5ikY#wY<5#+75Or3uOIw`P@O3hm{LdKce!ea-r(|QF|X8i#DMA3DH>e$`$xk zs=2Y~YmmFZBW1iulJoNCxvAoxf++j3Zg)YH z{nl&l!l=FO7fQVQ+?v3wXE2{aINP5th}!Fat*lEuoU=A)_b+0ej_c@dQzh$!Sx$QR zNt~~3#}`X_0aF~c&ku{Ewm;lujzIl$ec<&%?8`a5Ld(C{{Z74IKj3rBOHQ}@2OYC9 z_zdQAH=MpPxCz(i_fKCU{@78Z;g(4Lmb!V-tys@!J3TMF@IKsUon8|-4f%iN^aAy- z()6pMw*Rot3r?9=FV6*joU=sj%jNvsnYPP(gmuB|=Iscw9qyqW<0oihqFU$z{hZh_{%O3O9mI|K9AhqL;F-I%wL zyRUG}j5GEHd$MpJ3>IM?KQ+29SdR8^)fsD|ul|7d(ffkAI8STOs5>CvjC~qyXEdnX ztnu#)X03G0Cy1vT&)5HXMzhp+ma{Lo^L0GW$&G}Lc+j4=RID4`f_-X<4_WyUl!x-! zc&#e7q3zv0Td;xjVv?Ps`n9rv4JoQF3bndAL8g z#nc3zk>@*$UDneA=qxUWMzctmR+0x!Y&+7s6sJs#KjM#zI0CpS}%_Lv-iKd$>K z&|cRg8t+JSHS!ZVb2w_}^*KJ<@7wiuu1i1+VeH!(sK(?TIr}{HwA4(Fv{uUjPf!vAzg$z4%qoIR?*Nz+C9}fc4P7 z3-UT1L44dV_bKF``~~A${{Cm4BZD6z>ab5GnkQJ*P$n<-;w!NK1P|D zpAvo)_ea-YU+ihO;`+-UmHOm7gZo;}hMnutMfv_1``uf^v6!7Nrs{LZSj?V>l<->^ zWp7VTirIcMDaP{^FiA1ne|CqH&=0Mm?y0R zzYD*+&79C~$oHSMR@%W6XVq(aSSa0RHOXe|)LmSY)zIc`;-eU-blDRKnPRQ;v zn4|0Ah3>S+jCmdT&iV)T>CCrGoWI|1=SiC+{uAe~4cT>-Iic4PPvYToLS34FdmTH$ z&rqMs5&lCE@1f{=ynU|s()_Z>9?X;9n7>~2miy;#l;@a{ueL>h{0CgWU(E~8+Kzoe zUtQt1`z;G~zgV5Dhh;e{g5Q&MiWR}H<2~3d_bO*h$9fm!T%p~^Iq=oBffDp9{d%gj4*rDz8!Y$iC|R;qK7Ke`P;g zC+V*<4Vr$lrr)CaR@E&8FQhk@|yHwvJ z`cbzxR(zRb{_wTl*qq;Bz7J-AgJ2Hk0iS+tx8`F|^U)jQKH9103`=-CM~d;EjgtJm zvA9(npNC^{G0qo8#6HE}6SMQPo|wJg8`W^5G5&)4cg`7&tr|!F9zCzUF+NwSJ!eGD z|I}!2?Ck4}x%ZqAnNKe$^pCUgj5szu|2Xzbqpp9PO~*gZ_Nya~4Ob)k^d31UCVp6F z)O}LTS`SI%I4&-WPf~l*INPpLHQp+{zwv9n+kBOrxvJvf$A5kzF76es&5Zk{|ePtsNSYK>Q?D< z^eXjRqJB%%uS(bZmuoqyB%O68Jv;^D!mi^RbYDo7u76eOx>dV|tCjlT`t4USAG`Xz zH7eIB8xGjlL>%+m^O{v|QMMkiySShE#`*0kcPaB^AN$tx%ObaK;P_nR{srSel{sA+r?V(xP3HBvv_+f1qc3+cIG$Q_^?ufRJ5e>Ii z?zg%x7#(NZ?dUlB9MvDs_KkH3y&r4WdWS6iQ%vlmZj!P}uA61?sqxx=;%)ny7H|8t zY4LU)C|l#*Wj5zK=J18nL|*D<$Fu!sIk9+qoh2z_@%H*kiucmBOgf;q*Ig{$vOv>a zAn{J|FH{z5zA7~RCGl)$>&)_a+ioi~{USF5{Ry56y655f$}OhIor-a1_d<*xPf}le zz>o7z+8=v@wC4jOkk)^Z`?lzd+~aSz@l4ssb%`oXzgF{ACGjnFtK#kTyG!;RoiVOT z%TpWAap;%}*ZLh7zsijJIzM>Yh3RhL_Z*W4a=ue|VYfs1>mcQCUO3B7`AU%T^%vHQ zy%MB++l4FKRo^yv?{JOgr%t&>>owKKboYnXXg=x=(DqYye*m8No3nA>n0V1Ha~AHu zk}v8C+5Q6i24wxTLE;^Cn>GFhJr51>c73l!^i%u|@pj#>LDO$leY>(>#=T_JH=lpq zc~O!3>hYF0JRYE8g}$&GB~JZH~9&b921ipWPtsWEtLzV18e^$iDxC z_#@lD!uj`jf5%H$@4INou)YQ_>XCeuM0(=wz6HBZHR0k&sO%Ze(;}hoyvla4DaiM? zK6Zyf)9{|j*DuZsb3gP|Aoo3A51v?U%uOKg7pg(tU)%}ue&ZgH`%50YxL50Yx1@`b zYP;L5_17zU+|Oxy@6~o>^ND^${mbNinSWlqOt=C2XzX+E#c?xb-ZT`=9K>~Z$>O-2 zkYi?DGN|bd#`71wb0PB=z|R8t3l8Uj$0ZnZ@g>9RH>`fc>Sx!LOCk$(oqssK7SAvD z#0|&um&L0QE*|49!}FKBb1zw_&l5)Uyp3wSqwzu1$Ag!Q#$SMbI3YS3pF4r`<`F%w z{si04#1d>jlayeu=hOsyJ!dA^{wp)V=07vxwx}_0T{2Dd+;7GE{c|FlWPR-OOYFYj zz#=PSN3V&;c~4w4O|Jv&i^g-XMT_kIzq-Tsg-#DR=G%+*h29-vzpyVf^=)!}VC@3- z>yfyNknaZ<+4Y!b7TNRrgQ;u%=ivNyLeJ~@8IafWA3&Sm?1b~n@V?EW>;$`Rke#sU zn_O4OP6(aDddyDH^}2+cvEI5TE=TL3%)W|<^`yUDy4Gjk*QxjA;(B`%@-aW)c!T%+K4<%=_hqSU-~ZmI zet7Rs>>Jg-QQr@*NU-zvB?dJ2}NwDt?u1T=@sZC&h@E%WsO>a#C^Mm(#6KsC!G@Uw4r%uyp(0tTsymcCHU4ng| zuvzTbXQ_UzDz_)t``UIrzv}}RLm*)W27`$ax0!cZ;d= zcc5OrRb1t_`KuJemt2~dJnv@dQyp8*)?S6uF#dbdd_H74_ z+Q<7`D|5d=-LHAw%?kY#_utPI&kEh%h;_%}2Hgj0-xGePIHu2Ocgyva`t)j z%IgE$R@>(+^X?>TqSJBzwr@hVJil9(nip)qeOB>hS$tci2P6ze5s|>_f1-W9=uc$0d8b-l04CkS=S?xu zXF2}FAms4nu|#{GV~O@UP7?cxms`%g+&)jkF9Rg9Tw5mM_gXHO-yMkiHRQ7|UlSKZ zzl1w)ea|Z?YTp-1ie7vq+V$nJ=)D*pvz%hrUjLhdEcbUVZNgU-0oTW#xDoXqiQX;ijUyUvMB^Vh5blE0Fe;YJ37v!M#gr}!vmHF-t5NQkc~?TI z9rs_lXo-}2ihsH0d%5PjD$$;gszi=EKPatLd5vJIDu*|5&P zhxPt%x%d1%(T-EiQm=1a(voP$-?zX7CCDD$*t%-I#ZB4Y}YpeRVC)#ndHPMc* zts1U9(T<}@iRWV8`lCRSw8zS_q{Pp^jraY^>g0LUQa4G?*K2OJlmk!367BiTNwnuT zCz0p%wz8Z=d;W3~?fENEzXJ6uP`?88D^R~KZ67__E_xH~yg!Uz?zr!Yu*o$K;aFfA zaXi~Rg5v`7GaMI+{t`JBi?vj&73Np4-fdcOtP|@4Vr?*O&^#{s7STT;`d0C87k!85 zyF|ZT^gR-1kHgqz`gqLtF+ZpJn4cUU)9Mg?m*}^PzDM+b@-er)zUOd!)yLF#`&gnr zAM-!x>%?)dZ##~|zL#)(-}f?(Bfh`j_=#^fj-$SQ9F4mN#|rly9IIUBq1t60YF*~x z4wrdY<1($gU8Ys%GOY((rq$pwtwxt=HM>mfahGYexG!IUJ@oGTI6m!ufMdHm0(}SK zjKdovA72q~w)_7H&DR4=abbWdUJ_u6t)h8aH0`4463uow_K5yZa_klBZqfINW>7T4 zqIq95Bce$RGL@ttQ#m5oh}5fsZ6`$c|v?z#ph}G z#N$r&){1!35q!BKY+@nCoETyZNg;+kB9wk**rbMz!!a#1701lbOdO97&Bk$B=rkN> zhR(n-J5+$c>Ajs>Aha6CJ78IBKxnEwVzrBPDp70s*A1WZ+!^;{ih zJ=cauaJ(aY#g#$)`a=c6h9k^XEbVN8DY%X5$69?@yv;^ z267`TML~o$aCU@ee7ShuB%W2`Y2p~xAIGraIMzvB-1Uh0fw&boHpJbDV~WzH9h<`U5qi>5Tn99Be`!)v0< z;T__$MttrTpE~h*Kztg+r!mS>G)LKPACI!#wnW)(pNO*Ewno`*pN{exX^-+6>4@?g z>5B3i*&gLJ(i0tjRoMI~IuXa-=p-Cpji%waJ31N1zUT=!4n}9-xHp=O<8X8ij_*h3 z;W!e_$MKWs**K0y&&AQiF2KBqnwKksCJLI?~o^^P4JZr2j{*fzu=B4=e@x38| zo{b3)U2&M%iSO~|)r3`7#hcv;KfdZPvtKliC$2@z1>;%9JI1%da}|#04aPJ6yT>!; zy77$pf$@*PIwU^t%5k4~ek9-b%keWgI)^a^yu<_l@i@kt(!>6WbSn<~JC4^JmUJ~r zbl8-ueP-=pAHe4);(6r+dbUoOc{OSk-%+a*n1_)G%)=)Wn1|5`Y!AmLu^ygIqECAg zeL9lp)0IS@?Md|MNn)G%Qxe-lZxY+Xt4VARyOY=+`jXflzMhR<}=NTkV<1w)&@uY^%K!*;Zej$hNwB zBHL=;M7Gtzi9C;cC$g;$Ph?wte?mmi|x}&Ih;3#Suj$#=bk790{kD7s2wDI^>w6|Xz{{fC|IL4co zj=$jQ!^}s}A7&z1JRXH(yosE!82WK1P?Idjv*cKWqt9G+!uvQbmgBM$*eceFb)y_N z$?@0X*(N^E%5f`>hna5Cza*h{isx%`9FpU^a@>cb&wKOdeO{^Vp9g{yXd}#y@U8kLhxpEXO%=JY9~3I38xEFJP$jb9u~?mm< z%keWgI%V`(E61PU7&i6teZ3qX5zR*VzDbV17EPOc-(SwKfeJ|%$9S`^Vll24=Sm(Y z%W;+*3*}gZBl@%}SwH<(GSogfo_iI)CtuBDx*X@==rjFSvz^brhWeLq#6L7$%X+)< zTGrcz*YVgU$8Fb9zeA3%;TUh;y^bwy{I?kP7dJ`Fm91B#<2K~yn1N=3hk;p2ESs7r zWO9PJaSJ)g+#<{{>x4hM)7qz+M@2r_vKU>fGkI$vP|ve zYOhgwrO3X%^(r^1yb+8;_zu-?Rd#|+Cfe5xGX8$m4~Rag&v9%%u#5)3qx#ZRPFH4# z{*=BK<1+xWO)Zfe{-MfWBRuX@jI1$5y-S>h<`Z9z`eVL%tAINy} zKso`FqspBkukP;#S&ku) z_22|FeXz-_?oU%WL*%;tOz=fqpX6!q&sBRlI2HQEAmdr7axF-IlKzb#>$yYOryKyA z%)0)JAj@;x_DoRH0U0h|_2t4XFI1?Vq`ewsyfw;|;1;vxg;gN))2RCO%8jb;PlPm++u$HI@xKewi-;N7{4Es^g)JCQ+=+oK<%WYuli=ylhhA@Ecc-5N$Q6{xsD=Q zZjgTIDrcySU+A&dk?QkRUjQlaEl7Wo{_EA=M0wiZ`#V(b6xsJi zpUV9p>t_&Tc#`3fDSN)a)22;$BTeNDk&k^N6Qn;$|6H}_gAZ;%enFPM9BeW(-lzp7 ze<1xEL7tBeWhb~H@6CsN>r*@V;JDkiq7vE(j-D^;1KTuvh26(GZr3|9>@97(^G;D)?Q-)K}lN&R||?W#ldB=uWW-$@zqcY#tq zP|61~{yy5_-w!e#6Vq~n)H@*cF1R7@>Nor#;~^PO8pwD^`lo~R&j2^%-S|eX+DY2; z)SfT)+utZvJ4t&5DD?nJJ*d4}?Tspv^lt{~Ptw0b?Ii7;;D)@lZ}h32q~72;AoER9 z_JdL`P|BtDG_~idOwzvqq(4djQniz`SF21?UI}J6553W-dXoAka6?}28Ja?c^^(6HJB+mOF$nYe?n|LiZNIwUZ^9ydsOBhH~J4t)G z+H+M;QlF>#Qq@;0SArYzjv1&0nJ&q68`VxSe22;;#K7apv?>DNRq<*95v-WkUo}|7L+>m$0Ko=j0S!Nxx2TLtg7ZpXy2KG5CldN!brd`9LY3 z+H;lp;D)@v3>1L$Bk5PFc9QXwlV~T^swb&m32w;yWS~*?B=t?ApETGEN;yC&2PowL z>DLKv$jce*Q$0!jAjohe!{KJomJ6gkO=XgD2Dl;b^1)oylho&n{7}Wjq&{8snIPjK8BZ?AbV&N; zfec@&dXoBTl}XCApp+Ywa;v>j?HwwU^xq0H-Y$^gNQUbJrJNxB`a$~PA-(8H>eEyv zDW`+<%LJu7pp*xc@__Wq1EoBwFI9b+>MKBoCmFsPWO$O{Ye0r?R6R-kdet|9-*=|J z*`aol_N{8~0;Rm5low?D_!AeQAEce6Jx%o_zCP_QVcm_e{lVm>45n3-G<8?v$lk`thJ4t&w$aa~ldXoA))#p=2Jr#gbAE49+ zDD^=*{L4VbQ%)KF)oLecuTlF-wKuArq`e7bK08!TQr`(~zOegEQtCzReQNIqneG5s zS@PmY<|w9!S4@ zu(IT{H%rw{(q5+aa}KA_F9nflZ?Mn?M+~1$)r6b%SB2(seLQRbUVSyk`wlH zfsBV_Jl)_HGwTDA`R)4xnQlL1h945YZ+t+~4}S`Efb?@9)6WGfOXlt&nIDq*iGW+o zH$EU4KJ5!+_zcLrt};QXM^Nff{qjJmKahT^uOBM3`#wKjJE@1yd?cP!OD`~?j?Di`qWO+J|OmG2wUe}Gh<(pqlJ;D+leFiH{r$Zp?FFFJ3n=vhGXLdZ zWy$AzN%~c*ex>LWhDhpbL53$8z7b@2lIb;pl_f_Hk@W9SJ4t(|*t3R6+WXW_(mo*e zlZQy!2SKSHQ0fQon=(BE(%%IuOLB)u>DNGpi-2++g7i-V>7M~smYh38(k~Na{3PSg z0=Jk4J|Gz`_X}kBe8`n0mkp6jk7PWh>POPA9IPz4c8H`ONxy24@sjjg3F0~%ss*K9 zL8(`eevKggn!w7E`-VDHPg370`qm+m>5xpP3uJsGzgeQqBh}OG@6hyjIBcOVy90U%B|* z^fpO5$$G5-rQD#D8l802z*C zxUC?=b%K>854>&pxRB}eK`-?M(tkkwTHhvVH|f?+((Zta&jl+>w!KYCI|J#TA^KO| zCMjouyq@zwhRYXw|Jx+Pk@PD7Sq_rrC@3_Y@z2k&8l$@lTr#w%{^dj)vV#a+)vL4ex z<~Kvam%T&YQ1X2t^F^8Aa=|U;o~AgK^s52sw-T%@d3u<< zq2v!jIX{r;Ukl3l0h#|*;Pdw++sF7PxAbgfl}XKWyz9v%RyX!Li$%gX8a`M zUkq+B`6DF5*MM>!K-^cnyAr&iq)y22s~}?@JkkhCeS=cpU}ed}?>2!ql(Yz$Ps$9} z0n&dfNdGQS>KByyReQhM2f!`nnRlJZ*53syOHO)^yrJYwq0}#A#_tCiAIbRAK&F=t zGQC`Ii<#3&vYe%AuK=Y!K&cOq{cg3|SE<~nax+MOlKvg4?^BxNY`T6>@&nSZKxL9L ze}^XuR)bs2=1x-TA7p-4f?S^?S2{)Stpa)dlk{5;(ytkm{D6#iBe=zUGD6a?1C)9P z>EA8(aUYVj_o=;K?E@gwC7JFZ$oNUdKLj#7SM7PK&j%Sl z$@mLE#!oW-QgDkoyNhJ}Wgz2S3_gGVoR6wOmZwJbwIIWj4Bx2s^=fYdnU4K^k$_vuZ9IxdBnV&S3(^bv@nNB9i@Fc_Msl7~DqpSrb-=O3h++sSq z8bOwOJ;-!6f=qv_%3UDCkqp-dvOfCNZn89=pyX5KOi=O#O1{)ys`fIKD?s{@^s5H9 zn2WZN%vTM_cpE{c+o9a5`YurN2TK0bZcecNevo#O_B7S!D)T_bUkE;b|BW9tgY+lq z-vMqhf7nJ!`I)1|@w^(g)>w z0vS)A%Ka)2g7hcpZ>Cv)2c&0~#k~7E$#nBUhA&lnIf;2f1<3Fu!&j@l2HaxO{zfun{zYUlz#y zN4csesm}u$z5rx+lHm(M?sqE%84pSS#j3AXJxTpaaJ3KRRXs_4lj@s6DK{wP1{rS$ zNWV^y;rmoiQa=bX9LaF_i*E@>(w?R=NjX<#l5znkq~Cgw_16S4o({E>w0Ek$PxU1A1EB0P1EqW*;~xT_zyD7knUl1fApO%+ zCMlK(@PFkohF(p9j)EA7r|vDlZ0~zyJM@s#UH9rMw{HYXY~J)qmNl z_D(PgeHTbSl79Va9{_##-TAJ2GSc0Ec?-yNGeCK607`yAhARZ0zkkBV6{;txuK^iu zCFr~FiT4`8E#|%7lPuSIwKs|V`S&)0EO!UU@@`dox9a;;KLGmf+wq>swtf!CbX?GP z-=6pUAoE8uAL(k(5c?ZGF^&QGSrI~I0U6ARJ^!J03Uy$)ez~}Fu^>G@=_zTod(%!5xNx2)8 z`(}{&9aK9>`;gdif2{V%SLly*36TDIAnUIHWIjlSD^q>7vPM}8(vPIydeslAo}}J6 z#l{-}*$<_woCz{KNxwYRmnmzMwVpF7 zY;VmV{Ym`dZ`)o2vK=<6yk6xdkoDXQO1?qKH^}^K1sSeSvP zpyU&z-zre%H)1d7X#&~4Hmbfu^<5ytkqp%Wd3qRp8aB}vP|{WD%XOH zuTkWuU+fUNJ$=H0o%(g_)L)g1*$It z=~oV7UE}W+swe4RqxM>m;nu6%q-+M6zpW~FD*KfK;1=`2-`!kGKS+O)@u!1KKSP-X zeytw)1L;T7uTb@6ApL8U>y^!*)DuYm4iM|rJzLe@sq9w{C`}&y{@UY!jMr8ALCGh` z_|m{FX5LHbYR^#Sir($XQ#oH*s`_%37lSNUjmj&PwII_WnNA}Z1=p*+N!g+Lttxja z`&8er@_^EuY2$H0mdg)Hc|a+T+B4Lit8%`|r7D-JT&?m-l^a$5Kcu~Pm=sm|_J69n zW&jaX1OXN8fhJ2(Fo3BBnk-5ZBx#Mb0bR^F)<`R2&NN&2nw zpA-|tNygX9H{+f_z;iij$0!jIRedjwxz= zK*n<*{k(jVen0sIkmHja-v>E9$-E-SaRd1zeUjrY0a-s(oMfD2e7WLfkmHaXCjvPR z$^2Cy>r_CF7b{LOPO{#UAoHpq>m?xTkjx{~^#GYy1DQv1Tr)xI12UhQ`8kmJ9?0?Y zAnTIMBbnC^@lun63+$u8ZO=ipSEe(p8Z8 zB=Zx++Z6u<Sa%*##E`hu+IfvndFWFE=9ejw|O7pEvrGQLE9v$$L=gXug$){Q_OhZeaNd6t9 z05YHCevJn?uOi6vbcys*kn2ct{N?f^u>!IV$vUz8C&enrdWrOU(M;7mMGs^hl6CU( z`-ugRb$sdZVi9D&08IZKn*5S{lJ%C$FN3VJ3gq7vDj@r}D&8hK)9m~_Fr633I-NkS zLxbY|#71$vSOnRRWWOf)OT)tVgn545qISF%j2` zxxF-hFr7b`&L8AB4T?94O=1~jKFR!6`EBBQkbj49rmH@f)(4qCUVgK<66AWdNUsvx z#PuMLgW21@J{*wy<$mUVZ@b^|(a31hQYV^m4I9TqRaO=8@@s%CCYv zKh}U8Z@v7&J~p3Zej}K^UO?tINjHmSko8ICx5%%6%&#iGUVcrQWPWaj)&XRGConzl zK>U5>gMNw^K#tQS-7GE_%ZiifJmjwuTg4~ED#&^y^Aq{&MKjaRD<|f~eqsS+f0F%u z`Qybv48>+~Irw|zm%()1K=xmy_>w)CDR6zD8*}n?1zqhZ}1*Bg9=@;cs0a=G+ohFd$ zR#Kc~zh?Q%#WKh`Ez+yR3dni1Nb4#+x@e3IAwJ3yYVv3!z# zE6Dw?g6vPSe*$tml6h?)^UNaaJ0Nvlnq*!9WF3-qe8ow|18I^vlqRXmV7eb*x*v*1 zipSC<^Al;3+AOy7^FY=iStl>w-+;^yq)F;fnxrm+>3qO+K8i<*$I>M86KRs#>~H5o zQs<>fYG0b94x~xyP@1HUq)F;nnxw9RoG;1wCW@1cn*%f-kUB3-Qv1>*brEDelJx?` zNybBIk~)$msbgu9I*}%+O`ziirpF6RkC%L33^pM9m7tkVGCx$DWIU24sblG61JbWS zvku8Rrb+7qGM<+vseNgZx(KH01E%Yvc%XO_$k$0IpJcyg`H_5*evABAeyem9FZN|UVel80?2wK>-k{%{uyNdMv(mj`6T@&`JsH0ezW{YK1sht zeg))sB*%+Ejz==D736q{e3E{fe6vLR2hw*y=6fLPlB}BtS(jv91IRpIK1n~2CaFVd zlDZ7CF3Gx);w0m-G)dhGrt_Dd$ZwNh16hw`JyX*Dfb8#p?4OrU()XoF>PC=xfqasF zll&6MaY&96f?N-hd66_pT?Ls>GT%AK)^89S#UjW&l6g(?Tf~auB;yIl`uT$`8$iyx z0J09ryhix}$ox<&gUlnD7s+n{Stpiml}@DFq|G6=o&z%916hw`y}aTLiu=-y(oJFs zWIvMqn&r2MG01thO1FtMko`#ZGlyzEAm`H{`tlp4iy-@v>=!8BqK-LSTBQX{eu?=Ki4dlF>WtxZBC9GN0srG|Ml8 zeC~|E^mxf{6%+a92pji6)*;j5BEJB#jxXH^a-M;7lXNKEEL{d!k4%q`;w_3-K-P`r zx5}@9>HZ(7{TB-$eUkNjko#2xS*Hn1*I9nEbQxs77U@{=R_R3g6L7UTZJjwv>jAQ# z2d3*G-xmY11Tv3gUMN2jW03E|6R{0Uk2A=AHIV(x(Ke6demNlX^72Xg4f1{YB>hJD zfqasFll&5x&J#@M336T`$h>Bd<3;jG`mr=gok)|^<`~Tzq;^2o@xXNbz;yjUj+Y0S z*8nolmrv3Uq)F-~ka?kel76%NNIprwMScb3_$0@VL5@!{uN7q7L_SHsP5vh!zc*!$ z)&7BuJ0Sbz<&*Rqy8w}PC<8j$@G zka;BYNcK0!S)Zg&((eSaUtV#Nagy=Diu;O_jFXH9@=5w6{iPu5hVmmZ-hj+Yq)F;F zko#kf*E~V`4w$aD{Ji`I`M!LT`GGV^9ZHkbD?$D{4U+SYHX!4%G)bLElhoz}%@3r` zOOw>TG)dhEa{hsQl75r?P(De&S$-s+q~9VxmQT`em7mBb>6;TZPmsD3$lsO8%O~j% zPW?N+@#T~Br=)(LZv*)x{Sf4NMsoc~`jLDxU03-nAoo93oMfD2zgEQ)#Yx6V#@iG( zC+R!}8K-7EFQ24O()Xns!F2tlo1{Z&lKIW@Bl#r#7WuJ!l71phQk#=CFOWJfO;Y>P zBy}K7Qa6E|XDFYf-z-0pPttFZAIm4{x5`iCll0rOh*L4y8%z zNSdT>0n_6xKbGGrKao!|zfHb5Rr3PrJ0R=i<&*RqJx-Oh`o&P$Wj4It;^%O~kK$`9m|^qb^|@=5y5 z@+0{q{aBi$UIX&)_=$XyejCVnd;;R%>wimfoy{5lL*_Zq>3JkS57KXt@5?9YH_8v> zlk}V9F9rGc)KGDf@n*%#ibsl*jJGHr%O~kqLDoy;ll1xji_beJ}`v)@afsE%B zCmAOhFDULSPBKn1-UxDCiXiI*AYV@;^GN13fy^s`%nQNv`VTUXnt9D2^U5IeB9M6` z^GN2kfXs{Kw@N3{ZPGQ6bxdgclkD$+?4OrU(r=Jo0NKw6)BOb*Zv@#dkWbPNrAg{$ zFx?L@-4Deh#ak4Q<&*5!D!&S{UjlM`lJPc>bxpJO2c++S^gZx7tQVO+FN5r#2btFZ zGOqxp@5dDP6>n6$2y*;DagzN*X_7jUCaEhR$0yV0WyNE~TS1Or1v!4AILZEPiq}An zZ_d(wf{Z(0x}PA&$tzAW-k^8^WPe|AlJQ2xiy-@xoM!-Xok-?2fgGmgJL@kx%KfXpMAM>4Mla(uJg#!1FW#yybZ<`pLy zCmAn*9EapMKFD!M=8?<`bx{b zT>#nNmrv3Uq)F-$$h=TKNk5V%sVgAYh2*-#ij$02!SwYbKapPpS>K$a`GU;POOw>T zG)Y|qIUdRJ0>w$jOCZM!!J)__d7hArmqCsjDNZs@GF|~$KUSP%oMgNeOs@+d>m(q@ zA(=-quMK2g4P-r%^EE5<`T&_v&3q5!yz`2ajFXHPK#u3jZv87hvYb+e3Jdk zAnQl+N%|F#b?*TA{fAg_lJP3Yx+Lqa0hyP8>HdPu`y}8Be51YO_-F2dVSY zBy|BykAr+)ejrUUFO(*!BWaSl1?0L^K-P;DCmBzqNosSR<^@uFAp7Ozlk|OXDE61+ z`jYem`6PXkehFlqP;ruRlJQ7BNuQ)2%O~lR^s6B2C5n@blZ+S6w{ag#f5!z($4m7s zPlVECFkP3_zwgOdzPW(?;ws604w#-_Ag`kZ(FghOy-DVkz;r)T|NW;!`DOVPu_`7Y z>$ZvJLX88mPF~s<8^u6u5=$V@zfihaEXyZ(Ubf1w$|vc!$@C{@?+^%=|s8)a{tYxb{<8LdL_u? z7=bzG?=QB1oZlTF&!af?H+iWFGCxW6jxU+Zn7{C)e9Gl7HGu5bC^m^Dko}saTSV`2 z>o;7XeqyuOBDRUnm0CBD^~xKN$IZFQ#v8;&u?jN3boKv``7O|#Z>!iQHeX}?7O_oi zxYqiOVv|?`xqi*kWsvJ;uCv#lKyQ7%HsarwLw@q|z zR6Vg#Y!aJAa}(hv^!L+{oKn%r5jKxH31G(Pj z*S4+$QhOlllB}Coyg_kax=}iiZjvs6>`$_PsCcvDk#sC3qPfG)!voXt!E}82zF1V8 zWIT}H1akhNbhC6M-6CB9S)XM8Sn*cH6X`bT8pwQ-`Q}a?2hkTBL5^PpnNOzkQ@ly> z5FF)f{Bjv&9?852?9BOyiC6>E@xgTbyEOg=(99#5=PMqFp;!jfalv$4`7I#l zA4|7NS3%~J%uf_=Q{4Q<&c^}Szd3l%;Ym{G-Ptp%T?sv1|k#sCp!E}5u9bdlr zt?lQ5jFXJ#)A=agtav2dB3%KQPclDNyjAf;x=q^rPV)rQ zd4lX$lqRX0LC&{DtSC-0UXv!%{JVMmeE5SZ$hu^j2lD!tzeoEoHi|`%`6Tm8AoDBo zN%~d!HTmXVTh9a2{Q#MlmtO!`$Cqvt1F=agf$UGRe<(i^D~gkh$MO@=xli)|(|Lf* zD@l`SKalI$Dkfr^SOeLgWWMuzo8KTdicMk(Oy>Nx%4j z@<8gcG)Y~PCaDV#+I*7Q2f1H?SXP{5yedtm{r{l;AazNaO!K9y(%wThpJcoNmWkROU=#Yx5^`LS42oMb$|+SV_CtV`1O^eggf^2s#+ zG26cYQkSJk>ICF@Qj<^8H;-FCFZyC2mO##rWPT_=5@WFjGLK}QAKSWt7>kK$TD9(A zy8j^i<>eQ^bls(kAoBw0k~GPFWsvz*`Q8(%3o>2+)Af{JmS2%ylTW7kPul(kFs(0L zmaa*YjF+l5pQMgJt~WkuvFomQP4VO@>zk*w4q&CW)N*geppYkH* z#bQ-?iL`k}VAme4ltMa|))gMgz zgY4f3@;H|jCmF9OUXxFz{a&zj3Sc^pbXmG4O)_43(dLuXHEELCe@W{ohGHbfVj_BL zwI3k+7r^v*gWQjz;(>HYnq+<%WPVk?_p<7NjORhtDS&BR=|Bv{GMJuMAp1q~DRd$Zr)Bu?D8&g6X)gYQ4o0$T-P( zD8DA3q@RDy_VdL^j79HtTZd$R0pvOq<(D=f<7LIG^1V0IA58m$>|d5o(yz!*Kpv-> z;w0ndP3srHbUi`(f&5S`D^4;V$&bZEtbytJfoc7>Z2c0Lt{X_dCQVWo-qH9VbpWn5 zd%sNbbBs`$q>fU3+sh<%1!R4a{Y&p^JdnC7O;Q)%vvHETB27{k)@eQ}Nh!eX#(h z>i{wy$}h_&=|}Qov8p)9cp~3?qWWS1OzVTp^W_I(NpUhAUw$OUVijZ^G96F8`P7c* zfsB)k=jHoiAckTjRzUV6*)Nu#i1=ejdR}^9S|3d7%lE~i;w0mN{7{U<3Yd-ursK&^ z#G2wHO;XpSN$SF9HlIxMrOVP0$k$s{KFK`ucO5se0CJurz*+3Nk;I-zp}e`KRiG zX?>9SWoeSSCQVWozOeZuwGXEIC6*N@8Lvu{Y5y|c^k(vRg=<&*Ri`Q|Iz z&jUGslJUHJUkt<&$UKsH6=^aZ59B-&(R{7?U|Jtc>&y4WqT(duf&5U6#0tndWICSw zM64-JGH$-HNko-FkL5* z@lbxVSXP{5Jd$6NPtq?qwhl>MmL}7FAmhfiy{70=e!a^TRZL*DECB6~#%$W5r3vy{@)D$+!=$HlM#jGG0`iWIRaY zyS_>?9;W*9SIBfckn^d4>3C^;*H>f3Yl@SMn@u?0idRYY&!_sOS4nDLagw?Srq= zm!(PS1mybH$&baV;w0mRtyCAJE=iNrG06E< z<&*Ri`DSYy_dt$IGM<-Tl26jFNRw%Oko6PM^ie%9tp}#{p;<0oh znn5;R0J-iY>lH!PtH>wmCm`#Y!ImDF9)FPWynJ6QD^4!n1nI3KXo1GkdUuT=wqOs&ruhl>vpW?2T378(2-7NEB0c4&p z?eA{mfmqnn#!J3szR|{gu`tfAcR1eqkr)@PPDC@o>bw|JLB*tPQ2Gf)$Mq(`H_p)(c45lkzjKo;X@2z|>5JNHA$HrqZ5zP$i=S4r$ zvs6zE#88aHSWHAS+xGM3*y9$>*SKOLngtqH^ubb?i^-9;pE=4h5JNE%V=)oU(Hc+mMRS6DF%}cioT#`MpJa6+nv)e5eK8P2G0J#~ z&5tvls(PY1P4z@y3^M<88}~(XhVn&U48%~3GXG4QABvF}i-~AL)fIg)5JNE%V=)m; zv-*p^7>HpOKg;I%VjzZ@zud+HF%%;)78B7gD_;!7DC5~S9*c=+&ar-8^u<67MYBSA z8PB!a7XvXAla)4Z&Qm|p7XvZO^!YX~6wL+dC;DQL`4`%_F9u?m`4`!EAckTj#$qA{ z7i)Ym5@RtD%_YhcBQX{e(Ohct@?t1PqPa|Q(H8?T78B82u6)s4Aual1AckU;`B&Qf zP>jS_Ohj{)>WaP?T&@0MB*tPQnrm!cBARPePxQt3I^~J}jaCO@KC;>uy%u}__rdhJ zMGVDAG`HAzUi8I4OhmIvd7>{SqNyk@`kB7f`o0*5VdmdvxZ8VjzZMl<{uOPfSE}kM$!l7R|k? zFZyDT`S;nlF9u>LMq(@`qWQh;7mATseZb!5g9jBCBQX|Be{j-&CsP(HVpS|WTi%h{3b!FZ$1^ zzZi>&7(Q>~kr=;Vbt0MM#0Y1gykY$k$oD^?bR@=N_@>Q^#45=An&`h}cDYZC+IjzEXcN661_t+jt_HZ>-LXm2Y*Q{?5)j5JNE%^FP_R z|FiPyT)R%9>FlQS&5Ko#pL-*F>cPCf zzY%Vsx?&=lp6b`z(ie+c+Vv`l6|u0D^+PZ{@5P#Yv$gd-kn3F#OJb;aEQWpT`bFDV z#$qDYz;s==wRH<1wJ%+iHhJ4WFZyC6#$qCx2IY&s7>JP=i-~CZs-GB%33#X3<4x1g z#se_~M>%ufOhB%eDOl#k0?2jpr2{b(ql|-X-B?USe~7IYh@lvZiJ0Hc=EY(nnqiuc z=#Nl6F%%;)785ZTW%DC378B8oR(;XWxRb^aLopKlT~t?$#Y8k?R9Eyfy{q+oG1=W} zvxo9UUkt=hjKo;<$Ju^?=uegwLov$ysWu*FoMv?-#$qCxy=*)$`eGo4VkG9L+k9V) z#8^!Bv2ioQGMVY(K6d__W|n1M^u<67#Yl|BM9j~2%}}1FqM763cLVC)%8R}jh@lvX z@xD5LLDr$>yb}2&eR8$g>@73b=9Bcv)#l>2^72XgB!1WAZC^e~pImLudpnR%(kEA& z4)28WN%|!I-_>^_FuksciD>3oKNKU;-_QDi7>bb?i;3vZSH2jEk?1c_TnxoX%rCTY zUkt=hjKxGWi)?;g^u<67#Yl|BL^O-lU-ZR5jKxIEAE5b(p_mWki-~BOtRI(noy@(P z|CRE@Kn%r5jKxGW%WS{A=!@Y|@{hJmM01R^XpXfyIMGd?i$c+yr2e80rq4-YC`Mu| zCSq_3_iM(xQOY~tjZ^;gZgLv$7qj0pr;|s#XU@_%VzS(7Q?~TQSWHB7w)%;_XwH!@ zhAX7cvkXQ5e5(U76eBSf6VboW=0_Ln^(-c$xy1T;(H8?T6eBSf6VY6%d5XbhRwtM9 z^||6blHZdsS6EF_htec$h>H-C+5{&j2jb$-hHx*+9((be(^ltrv*N4Vw2&;?0(k7>j%yPZPc%O(U-ZR548=q=zbIey z#XyY3M8vNbrR$UzeK8S@W8=OUh@lvXv6$57?E8@pmU+<^i{O`h9Z8p@L+P?~Bwdk? zrK{43bWPgpXzLa_<(MX|I2`Tc_sn&(9%Rum^0Pvo18Y@P=`hvztw@w|Lr48$_X zJd$~Z&Q_DuMUdBzvV4+$CG$7VrJwUwK(0>}=nUeK8P2F%o0Z-`w^K#88aHSWHCIUHM`tMq(@`qTj=wAAuNwqns)4S3s_lw}oZg z%jP9werv0JF%eB4>xT_?9+6lBd0b3i>w6&U=cNlE3mPK@q$6%zP-R9TC!WmW<#S)m#SGpqBMDI+^7fk0XRx=%1zakdS zQhhM3D_s=}%Wb?YR={+>%GNJ{>G>>rXIou4SLdZz6N`^oza-Yy+Vj%E{nD7K>zI1* zDR3k3X|OB!4A>p~6PO3rxclbj=Pu4&pX=!@^iKEwQC0{XX^k)}LR0Y5nc>chy(xU$1|^zI%th9foz-v%^Up&g<|q%YD=vwZ2Ue`;yUe)#1t`Bu>>-t&OF`L}E z$#a|3Z@T5C)lL7rX~)e*Z#HkU6E?eIvzs=1YO_x^Gu^iDc0#w)x?S0AO}B?Oe{A!& zHvf9_{@r))KDYa?x}Vm)x%*AstKHx1{&DxOyZ_RCn;yIN7}sM`k9~U_-s99BXZE

%d+| z^t!0m&AtB6tFCv~-a~rt)O%L%g}o2&9rnJq_aA$I)cfb&2X47~%jdTIVasi|+HI?o zwz_$%r?&cht8QCwyY=v`PuseA>-)F<)7HE78Q158K4S`o6#K`$XSA^?j-D8-2g+`%~XZ{Z8-q$9`}1`>5Yv`#FUUg)xQkg>ws6 z6@F8AweWUfeW64DZTk=Hzf1pd{TKE>uK(%%FYAA2|Ht}2+yDLkxd9yqbRE!bz*Ykq z1`Hf9dBFSu2MsuSz^MbS7|=4{?g6U@R0ljaz#G^waEF1j2c9&rdEjLOuNnB;fsYRS zV&K?8;|I+fw0O{ggO(0Deo$_3-@$tho-laY;Ms#04L)!1ql4EBt_}WXaNUs2hipG& z#*l-CEE{swkXwfQX2>%`azi@}?KgDL&>2JL4n1b*MMEzidhO6#hTb>y(V?#n{b1p<`0`W?2utc3_EGq@?qx>yJ6S^!`>M7-mp)H zeLHN+;SIwF4<9pp-te=BUpM^L;ZF~LcX-?IP9u7c*k;7Q5o1P-AF*J>kt0qXv3$h4 zBR(AQ#fZ)$dykwna{9;vMjkWrq>*QgERVc!583h+Ud@n*6j4NAG<6&e!bxx1A5(<<&Q)6Ep`}WvR#(pvO zr?K9yKkwRUw;gtyzT1_%t=jE{-QM19{cdLWjd$O2cYpU__m_SL`rh^9ge%G*75Zcw)leCj2;ItBE^J+->62iE}0{n0Um* zlP8`v@!W}5O}uO3GZWvN_>YOdOzb;pB@Iq9BB@uW4A)=v6# z(myBtG-;#BJtq&IJaTg5Hlv}3UJLQEb?@n1iWz(sJsl}-W zO+9w%sZ+0*`s=BmPt8pmJ#Egk6Q^A;?Y?QxOx?=^m}*?XP8*QI;i zy4SsXy|dRZd-a&U%k=%Hhtsd0{^In%Pv2zkE%zR~_p*IX+ULxD9^7ZmK5y^y=Y2lk z$D6UqjA=8Dn^B#ycE)!zI?n7qbBCFG%-n0{ku#51~HVD=%ikDq~*vI&)H$l z_&HPN>@(-CIUV-hWZxnCUcB#3``)qdNBe%ZuQPY+xufS!oZCG2^0~LpePnLy+*juQ zZSI$Izn}Zd+->F!nm2OZ9`mNon>%m+dH2qHe%>qd-kSIMyzl3A*ssfeJ@(swzg7F) zvEO(5Z8U$&`T6-1=g*iQ%s+Jg3G+{%zjFS?^KYO3?)=Z@Z@pmng3$|(T5#2Z8x}mg z;Hd@O7p_?N(ZX*RZnCJ?qU{zWq(j;Bls-InQ)5=i^hP@y;gZOlMPkm2We%(&=U{b~eY?*?O4E zoGtM6vMtT+&Q|6PXKVAl(+Bs)!$zC*9{Siw{(`JAe;97kd+5QqckMXw1Q^w#&7|hq0S62tyI~)9?n|iEQN32&TJU48NHS2k4O6IGbU=yTR=N zXA855=>@kp+^yjDF`Juh;5L|^W)LDn;cf>t!t^tvOu>vX1Mt3b5RS#3I2KdU&c^YW zZzh<)Og9Icz0DzJA9JXgVGc7h&EaO2`IXt%9AV~}6U~0+RAioJ7MgR+A{@Q_%_Zgl zbFDeh++dcNo6!4a^nBhdH7}s&i|F}=S!Uis@6XJU=5uqD`N|w^zA?v`Z*ly;Gbfu) z&M9VN=Tx(;bGpepXW$D0$2rf;be zj4$&>=5(iG&TwwS8F!Zn@$-_+&Tq{*&hPMr(7W;F&U?&7&b>GT@532*KhC}f@kPNu zm>Zpk%x%uY<^ktX^RV-ndBl0#JmvbwN>t6K&Qs^^Omk~yZ}-n;mirg8ulou9IP|Gm;QrMtbpK`+ zyMH(PyZ^u+HvVZ2a=$Q#xL=yX+;7aU-0#eh?!U~@?hod8_eT@DKjB0FU-&`2bDrxu z7q~g+BDc=D*sXU~xgDH}+sV1j?d;s{ZsOeOZtDEj-ORby?dII)Ztgtbc6a{Z_Hh2_ zZsDwUdpfb(%V~ADbe?dxa-Md#c3yD%I4`=}I4`-|I&0m$^NQQxyz2IK-f;UlZ@UHO z9k;*po;$!<=MHk-cLzI(yS>xqj&?qAcXs~n?&5ssj&*);cXOQFILFP6cXGLjj+dL{ z)a52S8|S7tU2{{N&2oD=-Ez~N&2w{{?zy>6&)htxcW!~RRc?{fkX!8Z%^l$M&jrrF zT$3|2cc3#ox5U{YS8_(@4sv$P9qjCuJH#26JJcDUTj~^ZhdC2-hdYyUM>>;p$2wDU zCp!D&PI6}EPIG4EPIqSK&UE(8h0eU(S$Ud?rtBUd(?S7_n7l$?s4a>Tk5Ud(v5-d&c=Fx5oKP?pf!bxfh%- za%-J0b1yqz#2YV;GhkB>F zhk56?hkGmBW!|~&k=}Xk(cTU2v0mh!fP?1=Kb0|-Mhm*!@JWx)4R(J zz5Co|@AvL|qu*bk7``h`w)WI=T==}S}JPXdoubiv}pE$yfyXB?EyaE00 z#!k9F>*2o#z4$`ApP!s(`Ny@E$9A!KkK$JhK1ALT=Ue|0%!ljJc9>&62A|o)F`t2} zM>^(9aQ9Pe{N^ckJ-?sknD61=wbbetz}$nlx8hfVI)UD~j@bm<8|(r0Sz`0YAuH~$k z?0)w>(Q*OSpZovF<@n5E18#lUf7b2&xA3nQ4#RjqkF&@181c(1tsXVr@;CR{ae9Aa z%u&eyB2>mWZ{(@%5Tm$ZfUpcu696s7H74UhnZYSF>8?XI1 zS^aT6Y+mWt_H~=p8xPI-y?u-I*J53$Z@t;hul;y=_T@gW%j1w(h{CIJVHQ9&X1wWh2WMZnN<|_|-1XQ%bGBP{=-d0cz1T^Fxp$9Ycs-$Uzjxz4jLVs;*$rt55o@mM#zZgtZA z0nYvg6Lcd$?`T?=GAlysy4+t78h#&ns^b z;zOXb^?4rG;gQfUH`@LKkHGaAdda?4M-Sj#EOh(*nem97$3F&Go>*t+xmd5KJ#oL_ zdY*veM8@I?Q>{OFvSt0wHh#>`_IQ6S|Jp&;|5)s_i_UxH@qWp5<$ZD-=GSeIW2S@I zdQZUhfa4x;GVayzC;w>gv)O*kX|eHr->}^JD*GJt<`?$<_aI(Zyl<@B#l}zH#?JQ{ zTt`?ptCNlQ>h=GAT(kAb;{R>G+pkai{hp|G%hvToJ#XBB`{;b^*N{n$DS^?=j#;+B z{%7MJh3g~NX?R!5tMU3d4tW>eZues!U5`5B{67W$g5@?ZJ0DM5X3xu`@j5yi@y&4_ zpAWvO^Kw1v@i`(ppMKL|>t1q~U9UZ{u6&+3SasgRb%p15fa^Hdae}U^OCGlQ8IKO_ z`N#8>_sQ)3xO{^3+uuJg*7YO1zh?KF0lMG4tm_)D$9%nx(ChX=T(3C~*1Ht*dgn;T zTn%RP$YK6`9ewgEn^&iG`vuo&-XHJY&N3U1`WE#6{h1F-zF(DI*B{4qgV*=-RBspDmw%7^&viZFa|G+~IfBgQanh-%gS_ne+n)U@|9-x% zdDK4lXV>M6ufqKl{SUp}G0%c4aUXgW%=UZ!Teg37l_j5Z-a-7)^X=>92lV6mOvN}n z&S#HsOoI3s$2jKCVEfm}bN2j?Z%f6frcxDVlfpi=xVo$Yxu8UBWK z=PtH&n~JtycU<@X)9dl_tN;D=c+3fQ{_XEW&fE6<&0epZe@Dz?m+kR)DzGcAgWbXQ z<7Kbs?Dd&l&$8=R_PWkq&!6G-%6Vq5*X(|m-49RDb?$+a>^!sUR(3tgUeDR?r`%*;KZA4}E4Yr0Mcy0ov*Vl9 z$@*vOl*P0A?3TJ;hsWFb9eSfl-_Nu^Kil`q&YSG~$nyC*;&nBPKk$}4|5s?7qmIJ+ z8qAmH&onUW-~RZtKTopbl$|FlFS2zHyVr8zU6%h`X_=izmz{=ZU5xXZ@<*?>^E+JU zefE0K=FjJmMabv#K95%x_b#x1swy&4vwf8x{ zBQVc#nn#v*wVo%k{DFEN$mW;Dzrpe2xY_IJR;(xQw*$8-nyt?+ zuUJ2Ozw_Vno*!)2y?wmB&i3nHxL2z8QOBzO0|+Wq!u?@g<{d z{s{4fv+Qv=0h-6@f71@~_&HJgyhppCKhA^petVs**AqYd=XJ@>n{0oZPO$UJj^_Y9 z_x4|BpX*Q5`J2^S_LHr9$`OtUF`wf_zHYd_+4I@Wcy8wY#)siK?mwKr*?7E8aD8jI z{*oW+bHMC=l-(aW-|JAPM`ZJ|`$6`;AiExB_mlSbk@nZW>^_v;pR(6ob|1^$CuHvj zvg>7bU46gZ`-ANMmA$UB`((e1?R>}L^AWB`b{)LxZpTE}pTFb%0{8ngt@FuvA4Q#A zKePP#H`@Euk0WjVN4O5(hW^{=`R_KpuR7yN8=s2n2kW$d4*B9$dt96GT%2AnwVuc0 zeJk^`^Za96*VB3EdVjvIC)sr+JAbnL8K}eKpK;1lw!Vk!%Wp8xb?DD}m;4={n?T>D z*8@Mdq2J>*yFL%;^ULhIm3?lLeV+3QUXNVIY(ID&aNH;L{7j$Emsjh0pPet$xBB<} zyA#ii9Jl@Zh)H;Vzu13?aNcmd?0v&yc%S<+{HG>4 zW}Wgr2HF2Jkp0O%-x>1_*yCHvY@Ee&^u?{nOGJS$~!*6jk#x;?@6`TX2~ z*Dw5kpXoeLI@~c0%)@i^Krs89 zKYQJCK73xy^0GSFdQZl40YA6@8|Jqd<7IhSeZGJC75wb|Q}+4v>gD*X1b+7Ud*)~F zM}PPb*CNEPyUZSsIrrG}?f*4DtJ|LK>tyjSzPGQh?7Ggs)A0Rf^T&8?VLo%fi@@x; ze&er=xdOTs@AG+{OnJ+mFDE>R`viP`KFj}kjGt@qxSn^Zt$!EZ2lG73KCfDfac)Ci zc0JBMr+N?hzuCY)IJW(=&xb!5Vm}`~=@`qU(&Lso=05b>9Ou_V;J_E{d6oJ6yU=6s zf5PVjoX20UwClY7PRs1`+U)b=>~rGm^W9%Y*!|2tH_kpc%|0*vZ{uY1coXAuJqGHz z0P<7i)$8?J zTVefBc~jBvRrLG6olpBZ|82bg+j(d6$mV~7J}1dOU&+p|k>A+!EPKC~z23ik&hAg9 z`TbJv_kZ)Vyc5RRbaF?i{^u_>KBay2gI)ki8F^ zgZskUSWiALd;m7#{Qn5#>-w+Y1-K4>2lD-K9X=E0=O*32PPl(iXP>8J*VWM@?EB!i zX4(7N7r1_Ji@bxzJ7zm@82qu|hYRuka|342N9~`dp2vC1`(t)}s2>&stty)PVZk3-f!-pesZ zV*DTR+Sf3CM_ezsKiN7wbcX$$a;=!XZhpqG=Y4Mz z56>&8^Uk4;c@yN{=lS{O0CDnv(O>W3m=BSEFV6dq!A`h0a({AS_ILD-U*VY=@oayx zlbx;x^2Nqyyx_IY9GkybBmw$C|N4spy^ z81KgpHh$FeHlF=`J^MR;cDygW)*g>d^!_Nj4`lasJ~#Xe_0D_OUT1lHxNfh_x6cn* zJbOOK{478Cz0J?+dFR{vX!ab?jL+}+eCvV+&-neodN6z4X78J_&;Q%Mj@!SF%HBU^ z@29f&KYL$qj}PzT8>9ZF%dEao&-eeE&OYZ|fa@RclXc?H#$FFbpNH!g>Sp`ZUT6Ey z=ht4yz6%G zv;K}7)aSX(*HK>_dmiui@p_}a5a+{&&v8#`Z#sLO9*6zq_5C$mccx(;?XN?}@8p=d@Od9t z1P*=Nu2)8`C)cI@x_)^q-YX%0GsL)_j4y@G)~EgY{cn0QUQb8d@qLd>gi-scy0joTt#bX1LiFugno>JDM{#%fmktt!qY`1~^}D))&q< zXkD`-W`V!`qU~t9bt}N%9Ib11HT~g?>ox$+c(nXR^FUbI`h`5#PzhUun@|J-clO|4_6pzJWUo&eCqf;T(q6HIp&Zj^^-gBjNlC zt&4BxZVzW!w;kXdf!4)$bw{Dv47451Y28M{KOL=$@9yphe-_$~#@T!)_%2!;YiDOT z=XT!(&Pud6*3K9>xAqtd=QgxB*3PbIH+FVM+r`-vZC9re?Ul}Wv{yM3(BAJ%Li?UG z1?@U#8rq%Q>1cO$_d&atI}`16cQ)p*H(Jco-Iw!3i@CY;I5)Jend8n!yRW+t?Ob;; z+Ij8)X!moQ(9U<4pk3e|gm$5O2--#NQuJMn*2TA756AWaXk8Py%dp*q)-?yZM`C*k zTGy1^qp^JuTGt%x9*gZm(7NVO_jt5R-4oFs=AMl9SMI53m$|2-z0^GunU|q;&E;-0 z+AG}UaIQp)6>!hS_SI-zbB((K+t;GS@6xy{v3)&S*WBQqkL?@Ly5=VLLTulR)-{oP zF}7RKy7;MuOR;?`TG!m>UXJbC(Yj_p?n<-+b62Asl)Dz~;N10ShvaTVJ2ZDQ+NE9# z@()Ann!~+S*!~q-%-_2e?XBMJXm9iGKzqA)7usKYzeRhecQ@L*ynE3;;{6_NtM>r< zK7kg$SK<8u+f}r#dCGej+fSo)@wB)a+kZmqnl;{|*nSqRYhLso$M#ET@mm&NE4F_? z>zW_EC$aq#TG#ySJ%#OG(7L!iK7(xsEv`d#YtZKEo`d6|bZ=wzB-bUM8_bz&!h1NCa)~&<#O0=#yukHhEpO4lx7u2<3`$Dv? zxu|YEwl7BOnoH_F!uF+TU2|F8U$A{SS{&cHPq2L@S{&cHzhe7pv^c(XpP_xc?sK%Q zb^k>BMBSHYpRD^D?F)6^qJ6pUd*r`@7QX>e_XDwd!a8)#kgX5BB?ehaN@ z-mY^T{M{I>Yu>HPVf#I_cpcTjGVh~x%?EWIu$`cFOHS6m-W4ngdHQ&~C z!S;7(UGsh2CfNQLTG#wgw;8s7MC+QL>Ndyr&uFp!^*yldpvC&v_r!J%t!upc-q@}~ zi@QVpR@m-<)-@gL`(V2hT3jXSx5aj6w75RkH(`(b+kTAZ=<{jog=Eza2b zf!H2`7H4ezU~F%P7T4tZq1Yad)-@yQhhcjpTGwn}KLXo3pvCVU)NhY=$NEulc0!A* zO8t)5-UY2|#?@>zdQ*Ct>?^w5~a$ehRkFM2oYoej2u$(YofW`svtSj@C8h z`hBo{Hd@!5Q$G{!iu&1T&#m7V?aKOjh@OYmHRspQ$MywiU2|dmLTq1z)-@N`FUIyI zXmQP{KLFd8p~W?)z6sk`pv6_UehId(LhG8V>kq>AHE3OPZT%tGz7DNxuCHH;?Hka# z=EnNNv3(O-*W6sc4BHV}*R<3hiS1j^x@J}V(b%q_#kHdTSZv>h7T1dUEd?yf%_+xMV#{|{&H0UuSB{{P>(B$-KOCNt@w z7!px|(9(-EQz1YIkRTvp9Fj>GNiuO}0>rMU*chFEdy>l|jOmP2yUYt)p_j%4a_uO+&c}}~d-Is7G{C-f^wkDhoe*o0A2NO2J z9|Cpl;e@l`kAS-NXu>A=V<2CYNjMk&1gL9ICY%p{3Z&j8TnK*#r1m9T3~o!f6#PrV zX7Hti%fXiut^i%ut3bE)8ZgUx9ig&8T^nh=0X_=E_ORXr9|P*zLDpN~IiRkMwcZBL z1$8aYdOQ4JkaBLl1AYidIk(;gKMbTzwr&9@TJHtRtoI==2X(E&x)ojt>e}Jf2jSB} zU7KNj7(Nr!wOQ6j;j=+qJHq-nyb9E{YU`8m8c^42txv=2KwYc1J`0}%Vh>oKgExSb zeCrGF`5-0Vx((h4Vj);xf;WM>w#fPld@-nNORU@B%^-cQbq9PYNS|xn310@%=UR8c zSAg`n*0 zeha?|)U}(f-@|VK>07Noz;6TT2dzKCZwKiItv|u<0O<{_Kf~_=b?t8JukbCPuH9p` z=oal>P}lCaj(~3kv3acV@CQL%d&p{qKMd;HBi2OtqoA%mX0^i~2kBw0PWY3cu03US z!Jh_o?HOwd{8^Cx!kPwu6QsYeX2Aan(qCA!;C}<@BdjCg?}79Y*3s|}K>7&lLGV4G zu6<-33;!6TkFe&!{|@TfC)RQBe}KC7sr69!KS5pFXB`j!4Aiy#)`{@XL0$X8Itl(S zP}jb+PJw>~>e|=VY4C4AUHjHr2>%Y$wePLP@PC8!N7hpK|AF*J)^hlNK>8zVCHPc+k7zD z)`-Lf(gN6;z!ckJu+-L!ybPoVu`PvHfY|W1W$+mw*1K&5d=`ksZd(aI0>nzUt%6sB zx>jRrh1Y`AN1F#e2c$mQ+TaZ!_0i^q&j+cGwoZ5>NPV>V;7uU)(Y6-87^FVhy5Y?r z_0i^sF9oTOw&UT;Kql}7sB5R%P6SW4os8rRkiN-w zD*P;vzR7kvd=p6DWZMWo7sOt&odrK1#9p#(f?o(?FWJt8UkuXY*v^Mv3DV=(E`(nV z(&N}JhF=TP1nF^XH^A=(>2Yi~!S4a-acsB1{{+(G*lvU057Oh!mF-dZ*PyO_V|yI_ zEvReX*`9=d59(Tc;?wX1kaC;&EZhcCZWEt_CxP@ni7&v%fb>3z+u%7My-(sx@LZ7I zC-D{d!64Rt;&%8X5bG#$2UwK26P%g23;8UN5}WuI{0LCj<|Muip9|_*L*hH|c_1Y) zaW}jPqy#3u4_^#Y(h@&}F9UV0E%76GJE&{k#J%tiP}e#WKY_0S8CfKL3i=cGfxU_Q z!BFBCX!}6ytHdwi>p@-HnD{mPOb{z5@mu(LAXZS~_wWlqtf0gn;1_|k=ZQbUZvZJ9 zi9dnQC;klXNc5ASu1OQ&1t4!HX%f5$#CA=Z0xtn+f0Cxb%Rt(nq(XQFNZXQB46g=hTarq_+N5$M zbs#NFQYCy2sB6th)8Q>3W8|cn@FPLS$Vs!|%R$D-NmcNpK*q>PHSnWB+J~e%_%Wca zwI4t6QU;Qm;XNQFA!#YR z7sLigS_Th*Slvl0;2}`g`jS?{*MW@bl2*YtfV$S7)CxZV)U^|nJn)l1MtMnX@KZqA zv?MS5G?11psS|z%Na;%Q!OsM-nUmJSF9Wfele*!*1F@Nt{P5p{v|vfc!>8Wxp33ZNCp3W8Vr^+8+cDw?7O{w?7Kbus;qSVSkc4 zR)JWs_NU=BAm!QqEW8e+Jlmgx&jIN%?JvL^KzdC3Hu!vyvTc6}ek4fQw!Z>j4pO%5 z+u=unlx_PC_|YI`+rATi3`p6w?}8r-GTUQ+3+@Fe&-S+xNjw04dM*{qU1O z%Cr3o_$eUe+5RQ`G?4Oa{~CSKO4jbw*LS>2c#9X{|G-1q!qRQ z1pd+fGm<+%>{$D+@Vh|lSi6O_t1Y0e{mDK8ejkXvYLACM3}Ua^t?)-d>{WXr{BaO_ z)ozDB3F_L5b|-urNPlV<>tQc}jJE74@K-=xd)1x>-wtBC+B4vP1*sSIEck~Y^};?9 z{t-yMu#blC1!=482f;rBDckn3@UKD2wmlF2El9g<9|!*))U|)x4+Vd+k4N%f5KGcN z5&jE^C25}o*Bq1J7RMC04pQLZ@B)zj#nB8e0_k5IOW`FT{flE6Sms!Pq#R@f z>R1V{1Q}^MR)Mn}tw@dl>319+cr{4B<7k7|g3LTSyzqJuE5gwUp9?aJ;_$&2fy~)D z*20&7^h%Cycne6abok*%gSvLC<9N6SWDeF5gtvjrRXY0M$AQ#7$9i}dsA~a7KRgIx zOE^x1_kq|Fj+5c*L28rZRQO3CwaIZh{1lMd9p}R@1epVLTnN7uWOV7c7`_=~4$yHa{Bn>vK*whI6(Dnfj?3X!fs8jDSHN!q z8E-nSg5Lr%-gI08zYWB8bzBF(8^m^X+yK7^#CCPu1pgC=?drG%em}_UhvPQ*6Ckr6 zj@#i+fy{n5?tni7GVkHI3;q`n%hs_4{xYa*e|6joe;cIFa@+@h2c*w(Y=!RzsdtVC z;d?>)9mm7)eIWgg<5Bp2knx@4arieNHOuiN{1=d#<#-ydIiH4GoX^5_5If5G9NZ3K zO*vnHJ3+=@&Ta4%kngEFUxKHB^fJy@;MpL(jB`7D6o~cf+yT!8v3{L9;Rl1vy*PJ) z6P<4%$p@K5biNIr3}Oj8-+>o{tlcX{{183^#AbGW1fK;`+MRph z^&q9)`3Zb3h|TQ$6h05swfW9{@C6_?vvWVV#Q6o1W{~lk^Goqvq5?aCsPvIInG2R=YovvoOby6AU2ZI3BL@)Msm8~zXP$6oGI|% zgV;#UH29SuD;LfT_;nzbxibsg>KuvW0g%}|=V1JbV|ZYi~Ly!ruZZ&(2Bkw?WFYa|-+&kn-%D2Hy>0 zgEo)5Qx^drfQa0f^qk=z6y z4bn#>FNPlk(nlmW!^eV@?c}BK$soNz@-p~TkX|5p1z3{25=kjY2~S=HF9&JulUw1H zAhubu2RyZPIx28s4&?FZvtu0lh?vqKrFH3ZupTPWjNUn zUkOr%laGh50x84EL3k@jSxxSPdqLXy;b*(4)WVjz>{Frjw9Z304z8wC0kn*2=1^h~oS&rnZ;8%mpU?g7yzZql} zG5I?9?I10D@(u92L25_xP4EXmYDe-d@P|OGspQ+>PlD8xXiTHc8$Be+^`8l6)`xb&#=1@_q0(K&-6ft?<8sjEIvTgzo_v5hp(k{}{xwN`4gn z8OUs2^5gJ-fwbz$Pr`ozY1NaThHI{;;c>2K!BMW~z|pQ3kdFbGqi}75=YX`*u9x7s zAhwF@75I3Nk+N$$d?Lt5*|h^c3DmX8uAT5HAY%vDF7R;ITi|rp+hCRJ9kkUTqXXA& z@JQGD;4;^T;BwbTXjg#P`L4b2V?gYD*C*hyu1`UaYah7UwI6JAeF3(+z695~z6RI3 zz6Ce9z6Z~B{Xh)ofmqJ2AHfS;KY}vLw*6yGDTbyW+t=yR7WAd=8`) zawUTAxa>&Y1(}a^IpObt%*VQ1@DD)Vh${uY2jq>o(%>J1%u%>9;C}~ce_UDcPeI<4 zYb5xYYc%+k>mcwO*I4jdS04DYYaHlu9}1?p$Afw9iQvKRN#Hp56mXJz8nI0VX*b-3 z@Tnl}hPxOnaF>ET?sDXQkb38?gdY!LeYvN@gCN$IdnUXOBoE!Q;p;*2&|L+d;;sQt zch`YuxaWWy-3{O-_k8dicO!U#y9vC|y%@a6-3(srUJCxsy$rnEy#l<>y%N09y$Za^ z-3s39_JFs!+rWF=UhrObC-{Kd2R`Ip3qI`b1|M2n>b@xW_J@;AQ2kuSa9{0K6NAC0S`7ua;;l2?3 zhx=miNB5=3{{u4maBl|3rd$r@rd$E$rCf#fV30SGat-_tkkz7;>%iue8^D&7o4_Me zZb7>Yr1YlT26m*}j-(T0e426x+y}CTl5!XPM36OLnkSm_5-M}SSK z@!+CVmUFblsfpl{R6Dpb)d?P*>SEvIDv-V}H3i-Z(iWwr!95^tQECRf4Wunf&4PPD zW)f0If`Qc0U@-L{FqAqL>`To9*QJgF*QXu|Zb%&u_NPt+Pe`2vo{~BRJT-M1v7H7o z>z-N&KA2jJ)>yJl!Vkd@OMGlz|;o#dm!~Fbw2z%Gg21{*% z?**w-sf*#CfYhwiX85NdHdyLX_&$)9Fm)MxKZp&Mx&rQC)f-eLq zV`=At&1vU@Eom2mOVcg}SEOAEdeS!Ib2UhhmUcP39b`5>?Fx7Y$ZUMtRq!<+wpQ9T z@Z&(rQrdOky0ja>^=UVO8`5q8`_pa%Pe{8RJTdJK@T9c6z?0Lq5cU+1(v@~Ecv{+h z;OS{w!86ky1UIEU44#|zD0o5I`JnjdlXaxG()3cs@uUm%bZ5 z8KjR(e;=Hh{vncSAo-vE5xfwjO-SDhE>8ahY)StVJSu%3+La)+IDJ33D*X%anDj4^ zw}RB-^shlr`nOG9y6bSwC2dLsCBx*hx`-3k7f?gD>KPXT{PPXqOg3~)q778sW?63odM%{i;FApJ|m zLGV0~T*?>=Hf7|2i!#Q6M`aueuFMz@9-T1}T$M2iJSJlb*qSj7JT{{c^kfu+S7nqE z+tna#NJcsQT9Do(qY{2SNNu72KQQ0so%S27Z&_1q(7e!JZW)OZ9 zNM2?3!H)*XtIYNAV?gpMvmbseNM2>02wx3S5;9MQw}aHd%v0eVAayWPoMBr7QU^0P zg6lHR0@r75LcRf{24$WLo|Sn%cy8u};CY!BgBNFB3SN@A8GJ7Da{NCJ(hFx^0e=ys z7tXv2{uhw^%)ADCBl9}&&CDCX_cLz-Kg_%Z9F=t&I6CWga8}kG;1OAOfpfC9fOE6% z1s7%A2QJRq3N~jw2)1NB3@*!h6kMM5IJiFRNw7cbY4DV+XTgnG&w*!Vy#St-wGBKw z>m_hg)+?m#9FY03tnJ_xSv$aovvz`yWbFc9%z6v_D(h|Vo2+-hAF_6XKW4oT{*v_} zsAYcyCS~sh9oe6N<=LNt71{fUzY=7;ki8#19i(1oe*vEf@}${c!e@iji0rSy#o6D2 z$7FvGuFn1e?8yER^kx49c4hwz`m=up1KE~D@;`e7cv*Hlcy%_LHneNA6Tw@u?ci`a&Y9xN-$^SbTD`1 z%*2_jeIGtzCad1{;6t_|eWv!9tp$9_whsKW?Mm=P+hgF%w)gbe+Hr~V`7*D=IqHxO zE!mj_x}6U2cg`_~oUG-#AId*jJH(xtbFy}rJ3D8K_FCEs?H=u)X-l<7wS^g(Igirj zWam6Xz1xuaj8>8v0LwB%U~T3J;L({UWxlLkpOv1oU3)CcowG~(JWC(Hi!zX&^QJZ` zTOa?HmM?K?wmau-Z2|lp?RW5ZwBKi^=e$b}yTN;j+S%}*v{%8OwNazfb2Ll!=uEJ7baswzSvT4ZZa^Mqxd0w-d2h5nKEd*D zBvwnpnDiXGr5a4OECJn?Gr&yC=VRPC<17yxlny?2kUQrP%d23C<)oZ8t;BLl&I<5? z94~lLPA7Otjt{&nXD#@e7e>9$IiFtxetJGxetK}xsQOh+{eJA+$TUs?o(iL?lYh}_s?Kz?(<-J z?u%e%?q9&{+?T;oxvzp_a$g&}#Bz9Uxwg#Gp4%SBVXnM#zP+5B7nj#+NzF?F)AMY3 z$6B)U62MW&kF^|({8-B&$UT+hzLr;f0^-Q=^&xR-Kqu|N<82A|d$jRm4^2tr$v6B~r zt0y;u?UR>+9g~-VYbLMIChBiY*2mZCH%=+nYW16^G=aBHSqc7ON;CM!DNDgSr>p|+ zp0Yx#*B`=Xz5WP3>-ER*S+75V&wBkSeAesF;Im%;Gd?}~X;XO@`psa6{ztG=e`@Lq z_Q&s;8U#O{+Q%;W&!(1xpHFQ9|21_z_|?>A@EiR5_4H}|VCJ+HTCYBJ+ETD&TC>)# zpE2!J@J!@q>+eo02j8341n!x3I`}bu&es2q|4sTo(QeW|L%T`;*R-?1uh4GNzd?JB z{%^GB=>LcI9R0t9JxBiq?KzkTLaP^S1mg-;aGJ$kP!6URG=b>_H-MQ1&0sb@&(lX0 z+ysun=N0;rf?0=LsUHbmr5^=etsetkqpt>U)UPI<8})06=SKbdg4@6wiRVWBX5zU~ zzqR0Y@DIduzdok09Ly zFT>|ny#k+G^~3SGRiA;+2lONG`G8)H&j<8+d_JJh#peV1JbXT&FTm#m`a*m@s2@{! z=V9CRza!tF{}QM2}jJ_`PZJ_h+4dM-ZS&<~dKL-4;# zpMZ9ko{x5yJ{9dQy#Vbly$J1_dKua`^$N6a>NAS&0B50nQ$Ip#tBdY}*A}hNiuu}n z9cNd%v_9<&?RVN1?IG=H?JwF+?OkoJ_PO@G_A{qVrdcX2)t32|X3MdbZp%8$M$37Y zOD$JgZm`^Lx!3Z7WxM4)%RemNThjDAeWG5dAFkKv3-qP>YTd7&q+h1rp#MSNqCccR zt^Y;esehpF*T2($(UV4`jTkdx>WITf)Qng#!aL%v5&K4rjq}7^5_f&vt8s6}y&bnN zE;)W>{Mqq$#J?4vmvBhJ_=IB;Ium*mZcO+tA<24_^$hDATZ?U-?OfaAw&!g{iT5Nv zo%ng8GpR1=*rY!t{W-~M-(df}{RaDs_8;xKW255&$K{Ue9S=C(bksRlIeVO^Iv;kv z9O&wi2`k2xF(Wi{wH2U|W|1tW|G0VpI#^f9{JNTo6^T&n8T{G^*aXZHSIIiH3 z&>{bK$bSwkIqa{8eR$YE5BvJC{~YETpFO^6{JimN#-Ba@*70wT-!p#S_`C`E6RwNdHAyF9n;U5e(Ch9rr$jM&gomHzczjE^!?MnpFU+sXMZ`n`iMM{YebY1to_J-@7C`G)1^Ex&B})@Qs1K_*yZ-Tqy{|>$v{~h>#yyH3t z=Va2s597yxd*b6x<9Lx~{9|Q9`_40MyK%*ML;c(Dd1bA-fC!)QdxYc{OR@H=rGz8L zCH!&&C+PH2ZG=8Ui^Ij^5^z?W4VQ>Z!oIfS95^Q~8RybxX>NUvmZHzqQgLaxbX<>K;i2kTwhIK5XpL=S0);ts=&$4%gT+C=>{ zEgv^YKUqzc6u`HeLT6zcO)^HdDVw zo26gNuT5O59f7OTujf}MZq#aUSQz~J#2>H?{-Dj#@6qP!_h}9K1KK>?eElI#`aR4! zzehOb_XubF7%Siw>yLA~?`f@Be}VITFLS!@ZO-<+%gMfdoa_6XQ++>ircbl1)NPid z`Gtv9{CdPOxK@3t(MJM zeq1lVAaT52WeMPd`a(-cZ?g31i!AH(#g_H@63Yg?+0xJFj8DLwh&u^)GVT=IskqZ{ zr|ZitXXq;|8*yji&cdCodn}u9=jd&gbM@o-<&1#kd_BmoXY^Sv)Hm=88XNcpjSZGd z^ph=@;y62K*^K+0eum|8-0$^`mMiqLEm!L2TdvYCuw1QQXt_qe$a1ZIljS(t#ZX50|xR-D*(+9tTdsXk$x6=c^ruXYRaIfQb>Zj;$;CA8O z)cIjzPL{6I=J9PK@$WQCn2puLEKjjg{fTo#t<)&3VOFV+=X*#(TB%PQEtQnruxz@L z%~Z0PQYLEtO#Rt|j1aSxcDB;aR@y3+f*Qq^sT8bGY^922rMmAbC0nIrtxDFa?$)aA z=22RY(t4D(O{KuASeO3b-Rv&lQM&Z2`Feu**Q>N4r41=pdxuF|(rX*VkEMx{MVrD~I6*QgX+r`QcDmK)T4Z&I?GOj(?Evx?;wrM*Sn z_ZD^E+m!Y;rKRSWZ~t}`%N>e6snYV4l0B_t�VyR>l0RO6i}K_Bo|}PHA6IvKLfZ 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%0AS>3jy|n+(5GKt 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%0DJGY~;wBaIm&!^~ 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 M`(Nk!t4)Fb4{n+(L;wH) diff --git a/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml b/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml deleted file mode 100644 index c90933c5bd2..00000000000 --- a/packages/NLog.5.1.0/lib/netstandard2.0/NLog.xml +++ /dev/null @@ -1,27946 +0,0 @@ - - - - NLog - - - -

- 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. - - Type of custom Logger wrapper. - 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. - - - - 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) - - - - Support implementation of - - - - - - - - - - - - - - - - - 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 - - - - - 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. - - - - - - - - - - - - - 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. - - - - 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. - - - EventHandler will only be triggered for events, where severity matches the configured . - - Avoid using/calling NLog Logger-objects when handling these internal events, as it will lead to deadlock / stackoverflow. - - - - - 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. - - - - Marks class as a log event Condition and assigns a name to it. - - - - - Initializes a new instance of the class. - - Condition method name. - - - - Marks the class as containing condition methods. - - - - - 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. - - - - - - - - - - - Relational operators used in conditions. - - - - - Equality (==). - - - - - Inequality (!=). - - - - - Less than (<). - - - - - Greater than (>). - - - - - Less than or equal (<=). - - - - - Greater than or equal (>=). - - - - - 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). - - - - - 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 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. - - - - Condition message expression (represented by the exception keyword). - - - - - - - - Evaluates the current . - - Evaluation context. - The object. - - - - Base class for representing nodes in condition expression trees. - - Documentation on NLog Wiki - - - - 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. - - - - - 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. - - - - - - - Evaluates the expression by rendering the formatted output from - the - - Evaluation context. - The output rendered from the layout. - - - - Condition level expression (represented by the level keyword). - - - - - - - - Evaluates to the current log level. - - Evaluation context. - 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. - - - - - - - Evaluates the expression. - - Evaluation context. Ignored. - The literal value as passed in the constructor. - - - - Condition logger name expression (represented by the logger keyword). - - - - - - - - Evaluates to the logger name. - - Evaluation context. - The logger name. - - - - Condition message expression (represented by the message keyword). - - - - - - - - Evaluates to the logger message. - - Evaluation context. - The logger message. - - - - 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. - - - - - Gets the method parameters - - - - - - - - Evaluates the expression. - - Evaluation context. - Expression result. - - - - Condition not expression. - - - - - Initializes a new instance of the class. - - The expression. - - - - Gets the expression to be negated. - - The expression. - - - - - - - - - - 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. - - - - - - - Evaluates the expression by evaluating and recursively. - - Evaluation context. - The value of the alternative operator. - - - - 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. - - - - - - - - - - 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 comparison, 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 comparison. - - - 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 - - - - - - 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. - - - - - 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. - - - - Implementors must have the [ThreadAgnostic] attribute - - 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. - - - - - Initializes a new instance of the class. - - Assembly that have been loaded - - - - 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. - - - - Gets or sets the JSON serializer to use with - - - - - Gets or sets the string serializer to use with - - - - - 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 using late-bound types, so that we don't need a reference to the 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 assembly name for the types. - The prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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. - The assembly name for the types. - The item name prefix. - - - - - - - - - - - - - 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.). - - - - - Include context properties - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - Did the Initialize Succeeded? true= success, false= error, null = initialize not started yet. - - - - - 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 this configuration element - - - - - Configuration Key/Value Pairs - - - - - Child configuration elements - - - - - 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 install/uninstall. - - 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 LoggingRules for LoggingConfiguration - - - - - LoggingRule being built - - - - - Interface for fluent setup of target for LoggingRule - - - - - LoggingConfiguration being built - - - - - LogFactory under configuration - - - - - Collection of targets that should be written to - - - - - 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 LoggingConfiguration for LogFactory - - - - - LogFactory under configuration - - - - - LoggingConfiguration being built - - - - - Interface for fluent setup of LogFactory options - - - - - LogFactory under configuration - - - - - Interface for fluent setup of LogFactory options for logevent serialization - - - - - LogFactory under configuration - - - - - Allows components to request stack trace information to be provided in the . - - - - - Gets the level of stack trace information required by the implementing class. - - - - - 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. - - - - Gets the factory that will be configured - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Gets the variables defined in the configuration or assigned from API - - Name is case insensitive. - - - - 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. - - - - - Inserts NLog Config Variable without overriding NLog Config Variable assigned from API - - - - - Lookup NLog Config Variable Layout - - - - - 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 object. - - rule object to add - - - - 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. - - - - Lookup the logging rule with matching - - The name of the logging rule to be found. - Found logging rule or when not found. - - - - Removes the specified named logging rule with matching - - 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. - - - - - Allow this new configuration to capture state from the old configuration - - Old config that is about to be replaced - Checks KeepVariablesOnReload and copies all NLog Config Variables assigned from API into the new config - - - - 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. - - - - - 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 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 - - - Directory where the NLog-config-file was loaded from - - - - 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. - - - - Config element that's validated and having extra context - - - - - Explicit cast because NET35 doesn't support covariance. - - - - - 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 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 following rules when this one matches. - - - - - Gets or sets the whether to quit processing any following rules when lower severity and this one matches. - - - Loggers matching will be restricted to specified minimum level for following rules. - - - - - 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 - - - - - 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 be 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. - - - - - Checks whether the 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. - - - - - 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 assembly name for the type. - The item name prefix. - - - - Registers the type. - - The type to register. - The item name prefix. - - - - Registers the type. - - The type to register. - The assembly name for the type. - 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 assembly name for the method. - The item name prefix. - - - - 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 type-alias for an item (such as , - , , etc.). - - - - - Initializes a new instance of the class. - - The type-alias for use in NLog configuration. - - - - Gets the name of the type-alias - - - - - 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. - - - - - Failed to resolve the interface of service type - - - - - Typed we tried to resolve - - - - - Initializes a new instance of the class. - - - - - 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. - - - - Gets the element name. - - - - - Gets the dictionary of attribute values. - - - - - Gets the collection of child elements. - - - - - Gets the value of the element. - - - - - 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. - - - - Special attribute we could ignore - - - - - Default implementation of - - - - - Singleton instance of the serializer. - - - - - - - - Attribute used to mark the required parameters for targets, - layout targets and filters. - - - - - Interface to register available configuration objects type - - - - - Registers instance of singleton object for use in NLog - - Type of service - Instance of service - - - - Gets the service object of the specified type. - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Registers singleton-object as implementation of specific interface. - - - If the same single-object implements multiple interfaces then it must be registered for each interface - - Type of interface - The repo - Singleton object to use for override - - - - Registers the string serializer to use with - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Initializes a new instance of the class. - - - - - Registered service type in the service repository - - - - - Initializes a new instance of the class. - - Type of service that have been registered - - - - Type of service-interface that has been registered - - - - - 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. - - - - - No Stack trace needs to be captured. - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers - - - - - Capture also filenames and linenumbers - - - - - Capture the location of the call - - - - - Capture the class name for location of the call - - - - - Stack trace should be captured. This option won't add the filenames and linenumbers. - - - - - Stack trace should be captured including filenames and linenumbers. - - - - - 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. - - NLog configuration as XML string. - 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. - - - - 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 - - - - - - - - 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. - - - - - Mapped Diagnostics Context - a thread-local structure that keeps a dictionary - of strings and provides methods to output them in layouts. - - - - - 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. - - - - - 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. - - - - 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. - - - - 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. - - - - 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. - - - - stores state in the async thread execution context. All LogEvents created - within a scope can include the scope state in the target output. The logical context scope supports - both scope-properties and scope-nested-state-stack (Similar to log4j2 ThreadContext) - - - (MDLC), (MDC), (NDLC) - and (NDC) have been deprecated and replaced by . - - .NetCore (and .Net46) uses AsyncLocal for handling the thread execution context. Older .NetFramework uses System.Runtime.Remoting.CallContext - - - - - Pushes new state on the logical context scope stack together with provided properties - - Value to added to the scope stack - Properties being added to the scope dictionary - A disposable object that pops the nested scope state on dispose (including properties). - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Updates the logical scope context with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - Scope dictionary keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - Skips casting of to check for scope-properties - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Clears all the entire logical context scope, and removes any properties and nested-states - - - - - Retrieves all properties stored within the logical context scopes - - Collection of all properties - - - - Lookup single property stored within the logical context scopes - - Name of property - When this method returns, contains the value associated with the specified key - Returns true when value is found with the specified key - Scope dictionary keys are case-insensitive - - - - Retrieves all nested states inside the logical context scope stack - - Array of nested state objects. - - - - Peeks the top value from the logical context scope stack - - Value from the top of the stack. - - - - Peeks the inner state (newest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Peeks the outer state (oldest) from the logical context scope stack, and returns its running duration - - Scope Duration Time - - - - Special bookmark that can restore original parent, after scopes has been collapsed - - - - - Matches when the specified condition is met. - - - Conditions are expressed using a simple language. - - Documentation on NLog Wiki - - - - Gets or sets the condition expression. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - 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 - - - - - - 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. - - - - Extensions for NLog . - - - - - Starts building a log event with the specified . - - The logger to write the log event to. - The log level. When not - for chaining calls. - - - - Starts building a log event at the Trace level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Debug level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Info level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Warn level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Error level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Fatal level. - - The logger to write the log event to. - for chaining calls. - - - - Starts building a log event at the Exception level. - - The logger to write the log event to. - The exception information of the logging event. - The for the log event. Defaults to when not specified. - for chaining calls. - - - - 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. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing 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. - Only executed when the DEBUG conditional compilation symbol is set. - Type of the value. - A logger implementation that will handle the message. - 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. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - 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 logger implementation that will handle the message. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - Writes the diagnostic message at the Debug level. - Only executed when the DEBUG conditional compilation symbol is set. - A logger implementation that will handle the message. - 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 logger implementation that will handle the message. - A containing format items. - Arguments 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 logger implementation that will handle the message. - An IFormatProvider that supplies culture-specific formatting information. - A containing format items. - Arguments 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 logger implementation that will handle the message. - A containing one format item. - The 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 logger implementation that will handle the message. - 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. - The type of the third argument. - A logger implementation that will handle the message. - A containing one format item. - The first argument to format. - The second argument to format. - The third argument to format. - - - - 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. - - - - Interface for fakeable of the current AppDomain. - - - - - 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). - - - - - Process exit event. - - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Format a log message - - - - - Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) - - - - - 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 value without stringify - - - Implementors must has the [ThreadAgnostic] attribute - - - - - Get the raw value - - - The value - RawValue supported? - - - - Interface implemented by layouts and layout renderers. - - - - - Renders 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) - - - Implementors must not have the [AppDomainFixedOutput] attribute - - - - - 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. - - - - - 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. - - - - Ensures that IDictionary.GetEnumerator returns DictionaryEntry values - - - - - 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. - - - - 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 - - - - - Has property been captured from message-template ? - - - - - The properties of the logEvent - - - - - The properties extracted from the message-template - - - - - Wraps the list of message-template-parameters as IDictionary-interface - - Message-template-parameters - - - - Transforms the list of event-properties into 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 dictionary that initially contains no message-template-parameters - - - - - - - - - - - - - - - - - - - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - Will always throw, as collection is readonly - - - - - - - - - - - - - - - - - - - Special property-key for lookup without being case-sensitive - - - - - Property-Key equality-comparer that uses string-hashcode from OrdinalIgnoreCase - Enables case-insensitive lookup using - - - - - 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 - - - - 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 Object context of the exception. - Target Method 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. - - - - FormatProvider that renders an exception-object as $"{ex.GetType()}: {ex.Message}" - - - - - Object construction helper. - - - - - 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. - - - - Writes the specified bytes to a file. - - The bytes array. - The bytes array offset. - The number of bytes. - - - - Flushes this file-appender instance. - - - - - Closes this file-appender 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. - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class which creates objects. - - - - - - - - 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. - - - - 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. - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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. - - - - - - - - - - - - - - - - - - - Factory class. - - - - - - - - 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? - - - - - 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. - - - - 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 - - - - Convert object to string - - value - format for conversion. - - - If is null and isn't a already, then the will get a locked by - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - - - - - The MessageFormatter delegate - - - - - 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 - - - - - - - - Render a template to a string. - - The template. - Culture. - Parameters for the holes. - The String Builder destination. - Parameters for the holes. - - - - Detects the platform the NLog is running on. - - - - - Gets a value indicating whether current runtime supports use of mutex - - - - - Will creating a mutex succeed runtime? - - - - - 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' - - - - - Retrieve network interfaces - - - - - Retrieve network interfaces - - - - - 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. - The overflow action when reaching maximum queue size. - The maximum message 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 the on completion. - - 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. - - - - - Initializes resources for the protocol specific implementation. - - - - - Closes resources for the protocol specific implementation. - - The continuation. - - - - Performs the flush and invokes the on completion. - - The continuation. - - - - Sends the payload using the protocol specific implementation. - - 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. - - - - Parses the URI into an IP 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://. - - - - 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. - - - - 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 IP address. - Implementation of to use. - - - - Allocates new builder and appends to the provided target builder on dispose - - - - - Access the new builder allocated - - - - - 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) - - - - - 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) - - - - - 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 - - - - - 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. - - - - - 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 - - - - Object Path to check - - - - - Converts object into a List of property-names and -values using reflection - - - - - Try get value from , using , and set into - - - - - 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 - - - - - - - - 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) - - - - - 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. - - - - Optimized delegate for calling a constructor - - Complete list of parameters that matches the constructor, including optional/default parameters. Could be null for no 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 constructors using Expression-Trees - - Constructor to optimize - Optimized delegate for invoking the constructor - - - - 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. - - - - - 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 - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state that combines ScopeContext MDLC + NDLC for - - - - - Immutable state for ScopeContext Mapped Context (MDLC) - - - - - Immutable state for ScopeContext Nested State (NDLC) - - - - - Immutable state for ScopeContext Single Property (MDLC) - - - - - Immutable state for ScopeContext Multiple Properties (MDLC) - - - - - Immutable state for ScopeContext handling legacy MDLC + NDLC operations - - - - - - - - - - - - - - Collection of targets that should be written to - - - - - 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. - - - - 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) - - - - 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 - - - - - - - - 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 - NLog string.Format interface - - - - 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 8601 Compliant Date Format (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 numeric type (byte, int, double, decimal) as string - - - - - Helpers for . - - - - - IsNullOrWhiteSpace, including for .NET 3.5 - - - - - - - Replace string with - - - - - - The same reference of nothing has been replaced. - - - Concatenates all the elements of a string array, using the specified separator between each element. - The string to use as a separator. is included in the returned string only if has more than one element. - An collection that contains the elements to concatenate. - A string that consists of the elements in delimited by the string. If is an empty array, the method returns . - - is . - - - - 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. - - - - - 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. - - - - 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. - - - - Default action if none of the filters match. - - - - - Serves as a hash function for a particular type. - - - - - 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. - - - - 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. - - - - - 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 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 - - - - - 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 AppDomain.Id, the second the second the AppDomain.FriendlyName - 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. - - - - - 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. - - - - - - The default value to render if the Version is not available - - - - - - 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. - - - - - - - - - - - - - - - Gets the assembly specified by , or entry assembly otherwise - - - - - Type of assembly version to retrieve. - - - - - Gets the assembly version. - - - - - Gets the file version. - - - - - Gets the product version, extracted from the additional version information. - - - - - Thread identity information (username). - - - - - 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. - - - - - - - - - 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. - - - - - 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) - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - - - - - - - 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. - - - - - - - - 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. - - - - Marks class as layout-renderer and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - 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 - - - - - - - - - - - - The call site (class name, method name and source information). - - - - - 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 - - - - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - - 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 or sets whether to render StackFrames in reverse order - - - - - - - - - - - - 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 whether to include the contents of the properties-dictionary. - - - - - - Gets or sets the keys to exclude from the output. If omitted, none are excluded. - - - - - - Enables capture of ScopeContext-properties from active thread context - - - - - Gets or sets how key/value pairs will be formatted. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 - - - - - - Gets or sets whether to perform case-sensitive property-name lookup - - - - - - - - Render a Global Diagnostics Context item. 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. - - - - - - - - - Installation parameter (passed to InstallNLogConfig). - - - - - Gets or sets the name of the parameter. - - - - - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Context item. - See - - - - - 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. - - - - - - - - - Render a Nested Diagnostic Logical Context item (Async scope) - See - - - - - 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. - - - - - - - - - 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 nested states from like a callstack - - - - - Gets or sets the indent token. - - - - - - - - - Renders the nested states from like a callstack - - - - - 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. - - - - - - Gets or sets how to format each nested state. Ex. like JSON = @ - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Renders specified property-item from - - - - - Gets or sets the name of the item. - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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). - - When Format has not been specified, then it will render TimeSpan.TotalMilliseconds - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - A renderer that puts into log a System.Diagnostics trace correlation id. - - - - - - - - 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. - - - - - - - - - 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 sequence ID - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - - The process time in format HH:mm:ss.mmm. - - - - - Gets or sets a value indicating whether to output in culture invariant format - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Write timestamp to builder with format hh:mm:ss:fff - - - - - 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. - - - - - - - - - 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 - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - DB null for a database - - - - - - - - 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. - - - - - Gets or sets the name of the file to be Path.Combine()'d with the base directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the base directory. - - - - - - - - - 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. - - - - - - - - - The directory where NLog.dll is located. - - - - - 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. - - - - - - - - - - - - - - - The executable directory from the FileName, - using the current process - - - - - Gets or sets the name of the file to be Path.Combine()'d with the process directory. - - - - - - Gets or sets the name of the directory to be Path.Combine()'d with the process directory. - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - System special folder path from - - - - - Initializes a new instance of the class. - - - - - 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. - - - - - - - - - - - - The OS dependent directory separator - - - - - - - - Render information of - for the exception passed to the logger call - - - - - Gets or sets the key to search the exception Data for - - - - - - Gets or sets whether to render innermost Exception from - - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - 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 or sets whether to collapse exception tree using - - - - - - 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. - - - - - - - - A layout renderer which could have different behavior per instance by using a . - - - - - Initializes a new instance of the class. - - Name without ${}. - - - - 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. - - This public property will be removed in NLog 5. - - - - - Format string for conversion from object to string. - - - - - - Gets or sets the culture used for rendering. - - - - - - - - - Render the value for this log event - - The logging event. - The value. - - - - 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. - - - - 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. - - - - - - - - - Render environmental information related to logging events. - - - - - Gets the logging configuration this target is part of. - - - - - Value formatter - - - - - - - - Renders 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. - - - - - 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. - - - - - Get the for rendering the messages to a - - LogEvent with culture - Culture in on Layout level - - - - - Get the for rendering the messages to a - - 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. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer. - - Short-cut for registering to default - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom layout renderer with a callback function . The callback receives the logEvent. - - The layout-renderer type-alias for use in NLog configuration - 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. - - The layout-renderer type-alias for use in NLog configuration - 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. - - Renderer with callback func - - - - Resolves the interface service-type from the service-repository - - - - - Format of the ${level} layout renderer output. - - - - - Render the LogLevel standard name. - - - - - Render the first character of the level. - - - - - Render the first character of the level. - - - - - Render the ordinal (aka number) for the level. - - - - - Render the LogLevel full name, expanding Warn / Info abbreviations - - - - - Render the LogLevel as 3 letter abbreviations (Trc, Dbg, Inf, Wrn, Err, Ftl) - - - - - The log level. - - - - - Gets or sets a value indicating the output format of the level. - - - - - - 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. - - - - - - - - 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. - - - - - - - - - A string literal with a fixed raw value - - - - - Initializes a new instance of the class. - - The literal text value. - - Fixed raw value - This is used by the layout compiler. - - - - XML event description compatible with log4j, Chainsaw and NLogViewer. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - - - - - - - The logger name. - - - - - Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). - - - - - - - - - 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. - - - - - - - - - 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. - - - - - - - - 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) - - - - - - - - - - - - - - - The machine name that the process is running on. - - - - - - - - - - - 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 - - - - - - - - - A newline literal. - - - - - - - - The identifier of the current thread. - - - - - - - - The name of the current thread. - - - - - - - - Render a NLog Configuration variable assigned from API or loaded from config-file - - - - - 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 - - - - - Gets the configuration variable layout matching the configured Name - - Mostly relevant for the scanning of active NLog Layouts (Ex. CallSite capture) - - - - - - - Try lookup the configuration variable layout matching the configured Name - - - - - - - - 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. - - - - 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 - - - - - - - - - - - - - - - - - - Filters characters not allowed in the file names by replacing them with safe character. - - - - - 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. - - - - - Gets or sets whether output should be encoded with Json-string escaping. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - 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. - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:tolower} - - - - - - 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. - - - - - - - - - - - - Lookup property-value from source object based on - - Could resolve property-value? - - - - Only outputs the inner layout when exception has been defined for log message. - - - - - If is not found, print this layout. - - - - - - - - - - - - Outputs alternative layout when the inner layout produces empty result. - - - ${onhasproperties:, Properties\: ${all-event-properties}} - - - - - If is not found, print this layout. - - - - - - - - - - - - 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. - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - - 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. - - - - - 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} - - - - - 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. - - - - - 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] - - - - - 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. - - - - - Same as -property, so it can be used as ambient property. - - - ${level:toupper} - - - - - - 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. - - - - - - - - - - - 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. - - - - - Gets or sets the line length for wrapping. - - - Only positive values are allowed - - - - - - - - - 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 - - - - - - - - - - - - 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. - - - - Renders the inner layout contents. - - - for the result - - - - - - - - - - Converts the result of another layout output to be XML-compliant. - - - - - Gets or sets whether output should be encoded with Xml-string escaping. - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - - - Gets the inner layouts. - - - - - - - - - - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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'). - - - - - - - - - - - - - - - Get the headers with the column names. - - - - - - Header with column names for CSV layout. - - - - - Initializes a new instance of the class. - - The parent. - - - - - - - - - - - - - - - - Specifies CSV quoting modes. - - - - - Quote all column (Fast) - - - - - Quote nothing (Very fast) - - - - - Quote only whose values contain the quote symbol or the separator (Slow) - - - - - A specialized layout that renders LogEvent as JSON-Array - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Gets the array of items to include in JSON-Array - - - - - - 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 {} - - - - - - - - - - - - - - - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded as Json-String-Property, or be treated as valid json. - - - - - - Gets or sets a value indicating whether to escape non-ascii characters - - - - - - Should forward slashes be escaped? If true, / will be converted to \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - Gets or sets whether an attribute with empty value should be included in the output - - - - - - A specialized layout that renders JSON-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log event (as JSON) - - - - - - Gets or sets a value indicating whether to include contents of the dictionary. - - - - - - Gets or sets whether to include the contents of the dictionary. - - - - - - Gets or sets the option to include all properties from the log event (as JSON) - - - - - - 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 exclude null/empty 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 \/ - - - If not set explicitly then the value of the parent will be used as default. - - - - - - - - - - - - - - - - - - - - - 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 formatted output using the log event as context. - - Inside a , is preferred for performance reasons. - The logging event. - The formatted output as string. - - - - Optimized version of that works best when - override of is available. - - The logging event. - Appends the formatted output to target - - - - Optimized version of that works best when - override of is available. - - The logging event. - 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. - The rendered layout. - - - - Renders formatted output using the log event as context. - - The logging event. - Appends the formatted output to target - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes this instance. - - The configuration. - - - - Closes this instance. - - - - - Initializes the layout. - - - - - Closes the layout. - - - - - Renders formatted output using the log event as context. - - The logging event. - The formatted output. - - - - 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 - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur - - - - Marks class as Layout and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The Layout type-alias for use in NLog configuration. - - - - 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 independent 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - 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 whether to include log4j:NDC in output from nested context. - - - - - - 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 log4j:event logger-xml-attribute (Default ${logger}) - - - - - - Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. - - - - - - Gets or sets whether the log4j:throwable xml-element should be written as CDATA - - - - - - 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. - - - - - - - - - - - - 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. - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - - - - - - - - - - - - - - - - - - Typed Layout for easy conversion from NLog Layout logic to a simple value (ex. integer or enum) - - - - - - Is fixed value? - - - - - Fixed value - - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - - - - Initializes a new instance of the class. - - Dynamic NLog Layout - Format used for parsing string-value into result value type - Culture used for parsing string-value into result value type - - - - Initializes a new instance of the class. - - Fixed value - - - - Render Value - - Log event for rendering - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Renders the value and converts the value into string format - - - Only to implement abstract method from , and only used when calling - - - - - - - - - - - - - - - - - - - - - - - Implements Equals using - - - - - - - - Converts a given value to a . - - Text to be converted. - - - - Converts a given text to a . - - Text to be converted. - - - - Implements the operator == using - - - - - Implements the operator != using - - - - - Provides access to untyped value without knowing underlying generic type - - - - - Typed Value that is easily configured from NLog.config file - - - - - Initializes a new instance of the class. - - - - - Gets or sets the layout that will render the result value - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets the fallback value should be null (instead of default value of ) when result value is not available - - - - - - Gets or sets format used for parsing parameter string-value for type-conversion - - - - - - Gets or sets the culture used for parsing parameter string-value for type-conversion - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - 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. - - - - - - Gets or sets the result value type, for conversion of layout rendering output - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-attribute-value - - - - - - 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 - - - - - - Gets or sets whether output should be encoded with Xml-string escaping, or be treated as valid xml-element-value - - - - - - 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 the option to include all properties from the log event (as XML) - - - - - - Gets or sets whether to include the 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 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 - - - - - - - - - - - - - - - write attribute, only if is not empty - - - - - rendered - - - - - - - A specialized layout that renders XML-formatted events. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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. - - - - - - Extensions for NLog . - - - - - Renders the logevent into a result-value by using the provided layout - - Inside a , is preferred for performance reasons. - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - A fluent builder for logging events to 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 log level. LogEvent is only created when is enabled for - - - - The logger to write the log event to - - - - - Logging event that will be written - - - - - Sets a per-event context property on the logging event. - - The name of the context property. - The value of the context property. - - - - Sets multiple per-event context properties on the logging event. - - The properties to set. - - - - Sets the information of the logging event. - - The exception information of the logging event. - - - - Sets the timestamp of the logging event. - - The timestamp of the logging event. - - - - Sets the log message on the logging event. - - A to be written. - - - - Sets the log message and parameters for formatting for the logging event. - - The type of the argument. - A containing one format item. - The argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - A containing format items. - The first argument to format. - The second argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - The type of the first argument. - The type of the second argument. - The type of the third argument. - A containing format items. - The first argument to format. - The second argument to format. - The third argument to format. - - - - Sets the log message and parameters for formatting on the logging event. - - A containing format items. - Arguments to format. - - - - Sets the log message and parameters for formatting on the logging event. - - An object that supplies culture-specific formatting information. - A containing format items. - Arguments to format. - - - - Writes the log event to the underlying logger. - - The class of the caller to the method. This is captured by the NLog engine when necessary - 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. - - The log level. Optional but when assigned to then it will discard the LogEvent. - 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. - - Type of custom Logger wrapper. - - - - 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. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message including parameter placeholders. - Already parsed message template parameters. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - Log message. - List of event-properties - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - An IFormatProvider that supplies culture-specific formatting information. - Log message including parameter placeholders. - Parameter array. - - - - Initializes a new instance of the class. - - Log level. - Override default Logger name. Default is used when null - 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 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 - - - - - Creates the null event. - - Null log event. - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - The parameters. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - The exception. - The format provider. - The message. - Instance of . - - - - Creates the log event. - - The log level. - Override default Logger name. Default is used when null - 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 - - - - - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - Repository of interfaces used by NLog to allow override for dependency injection - - - - - Gets or sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - Make sure you are not calling this method 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 method introduces performance hit, because of StackTrace capture. - 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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 notification is called. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - Dispose all targets, and shutdown logging. - - - - - 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 candidates 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. - - - - - 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. - - - - - - - Loops through all cached loggers and removes dangling loggers that have been garbage collected. - - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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 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. - - - - 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) - - With property, all properties can be enumerated. - - Property Name - Property Value - New Logger object that automatically appends specified property - - - - Creates new logger that automatically appends the specified properties to all log events (without changing current logger) - - With property, all properties can be enumerated. - - Collection of key-value pair properties - New Logger object that automatically appends specified properties - - - - Updates the specified context property for the current logger. The logger will append it for all log events. - - With property, all properties can be enumerated (or updated). - - - It is highly recommended to ONLY use for modifying context properties. - This method will affect all locations/contexts that makes use of the same named logger object. And can cause - unexpected surprises at multiple locations and other thread contexts. - - Property Name - Property Value - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided property - - Name of property - Value of property - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Updates the with provided properties - - Properties being added to the scope dictionary - A disposable object that removes the properties from logical context scope on dispose. - property-dictionary-keys are case-insensitive - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Pushes new state on the logical context scope stack - - Value to added to the scope stack - A disposable object that pops the nested scope state on dispose. - - - - Writes the specified diagnostic message. - - Log event. - - - - Writes the specified diagnostic message. - - Type of custom Logger wrapper. - 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 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. - An exception to be logged. - A to be written. - Arguments to format. - - - - Writes the diagnostic message and exception at the specified level. - - The log level. - An exception to be logged. - An IFormatProvider that supplies culture-specific formatting information. - A to be written. - Arguments to format. - - - - 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. - - - Log levels ordered by severity:
- - (Ordinal = 0) : Most verbose level. Used for development and seldom enabled in production.
- - (Ordinal = 1) : Debugging the application behavior from internal events of interest.
- - (Ordinal = 2) : Information that highlights progress or application lifetime events.
- - (Ordinal = 3) : Warnings about validation issues or temporary failures that can be recovered.
- - (Ordinal = 4) : Errors where functionality has failed or have been caught.
- - (Ordinal = 5) : Most critical level. Application is about to abort.
-
-
- - - Trace log level (Ordinal = 0) - - - Most verbose level. Used for development and seldom enabled in production. - - - - - Debug log level (Ordinal = 1) - - - Debugging the application behavior from internal events of interest. - - - - - Info log level (Ordinal = 2) - - - Information that highlights progress or application lifetime events. - - - - - Warn log level (Ordinal = 3) - - - Warnings about validation issues or temporary failures that can be recovered. - - - - - Error log level (Ordinal = 4) - - - Errors where functionality has failed or have been caught. - - - - - Fatal log level (Ordinal = 5) - - - Most critical level. Application is about to abort. - - - - - Off log level (Ordinal = 6) - - - - - 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. - - - - - - - - - - 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 other 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. - - - - - Compares the level to the other object. - - The other 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. - - - LogManager wraps a singleton instance of . - - - - - Internal for unit tests - - - - - 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. - - - - - Gets or sets a value indicating whether to automatically call - on AppDomain.Unload or AppDomain.ProcessExit - - - - - Gets or sets the current logging configuration. - - - Setter will re-configure all -objects, so no need to also call - - - - - 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 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. - - - - - 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. - - Purge garbage collected logger-items from the cache - - - - 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. - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Suspends the logging, and returns object for using-scope so scope-exit calls - - - Logging is suspended when the number of calls are greater - than the number of calls. - - An object that implements IDisposable whose Dispose() method re-enables logging. - To be used with C# using () statement. - - - - Resumes logging if having called . - - - Logging is suspended when the number of calls are greater - than the number of calls. - - - - - Returns if logging is currently enabled. - - - Logging is suspended when the number of calls are greater - than the number of calls. - - A value of if logging is currently enabled, - otherwise. - - - - 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. - - - - 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 - - - - - 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 } - - - - - - 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. - - - - - Convert, Render or serialize a value, with optionally backwards-compatible with - - - - - 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 - - - format string 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 - - - - 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 general options for NLog LogFactory before loading NLog config - - - - - 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 - - Fluent interface parameter. - Explicit configuration file to be read (Default NLog.config from candidates paths) - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from file-paths if provided, else fallback to scanning for NLog.config - - Fluent interface parameter. - Candidates file paths (including filename) where to scan for NLog config files - Whether to allow application to run when NLog config is not available - - - - Loads NLog config from XML in - - - - - Loads NLog config located in embedded resource from main application assembly. - - Fluent interface parameter. - Assembly for the main Application project with embedded resource - Name of the manifest resource for NLog config XML - - - - Reloads the current logging configuration and activates it - - Logevents produced during the configuration-reload can become lost, as targets are unavailable while closing and initializing. - - - - 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 - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Enable/disables autoloading of NLog extensions by scanning and loading available assemblies - - - Disabled by default as it can give a huge performance hit during startup. Recommended to keep it disabled especially when running in the cloud. - - - - - Registers NLog extensions from the assembly. - - - - - Registers NLog extensions from the assembly type name - - - - - Register a custom NLog Target. - - Type of the Target. - Fluent interface parameter. - The target type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Target. - - Fluent interface parameter. - Type name of the Target - The target type-alias for use in NLog configuration - - - - Register a custom NLog Layout. - - Type of the layout renderer. - Fluent interface parameter. - The layout type-alias for use in NLog configuration. Will extract from class-attribute when unassigned. - - - - Register a custom NLog Layout. - - Fluent interface parameter. - Type of the layout. - The layout type-alias for use in NLog configuration - - - - Register a custom NLog LayoutRenderer. - - Type of the layout renderer. - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }'. Will extract from class-attribute when unassigned. - - - - Register a custom NLog LayoutRenderer. - - Fluent interface parameter. - Type of the layout renderer. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of the layout renderer. - - - - Register a custom NLog LayoutRenderer with a callback function . The callback receives the logEvent and the current configuration. - - Fluent interface parameter. - The layout-renderer type-alias for use in NLog configuration - without '${ }' - Callback that returns the value for the layout renderer. - Options of 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. - - - - Register (or replaces) singleton-object for the specified service-type - - Service interface type - Fluent interface parameter. - Implementation of interface. - - - - Register (or replaces) singleton-object for the specified service-type - - Fluent interface parameter. - Service interface type. - Implementation of interface. - - - - Register (or replaces) external service-repository for resolving dependency injection - - Fluent interface parameter. - External dependency injection repository - - - - Extension methods to setup NLog options - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configures - - - - - Configure the InternalLogger properties from Environment-variables and App.config using - - - Recognizes the following environment-variables: - - - NLOG_INTERNAL_LOG_LEVEL - - NLOG_INTERNAL_LOG_FILE - - NLOG_INTERNAL_LOG_TO_CONSOLE - - NLOG_INTERNAL_LOG_TO_CONSOLE_ERROR - - NLOG_INTERNAL_LOG_TO_TRACE - - NLOG_INTERNAL_INCLUDE_TIMESTAMP - - Legacy .NetFramework platform will also recognizes the following app.config settings: - - - nlog.internalLogLevel - - nlog.internalLogFile - - nlog.internalLogToConsole - - nlog.internalLogToConsoleError - - nlog.internalLogToTrace - - nlog.internalLogIncludeTimestamp - - - - - Extension methods to setup NLog - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Logger name pattern to check which names matches this rule - Rule identifier to allow rule lookup - - - - Defines for redirecting output from matching to wanted targets. - - Fluent interface parameter. - Override the name for the target created - - - - Apply fast filtering based on . Include LogEvents with same or worse severity as . - - Fluent interface parameter. - Minimum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with same or less severity as . - - Fluent interface parameter. - Maximum level that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity that equals . - - Fluent interface parameter. - Single loglevel that this rule matches - - - - Apply fast filtering based on . Include LogEvents with severity between and . - - Fluent interface parameter. - Minimum level that this rule matches - Maximum level that this rule matches - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Filter for controlling whether to write - Default action if none of the filters match - - - - Apply dynamic filtering logic for advanced control of when to redirect output to target. - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - Default action if none of the filters match - - - - Dynamic filtering of LogEvent, where it will be ignored when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will on match also be ignored by following logging-rules - - - - Dynamic filtering of LogEvent, where it will be logged when matching filter-method-delegate - - - Slower than using Logger-name or LogLevel-severity, because of allocation. - - Fluent interface parameter. - Delegate for controlling whether to write - LogEvent will not be evaluated by following logging-rules - - - - Move the to the top, to match before any of the existing - - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Redirect output from matching to the provided - - Fluent interface parameter. - Target-collection that should be written to. - Fluent interface for configuring targets for the new LoggingRule. - - - - Discard output from matching , so it will not reach any following . - - Fluent interface parameter. - Only discard output from matching Logger when below minimum LogLevel - - - - Returns first target registered - - - - - Returns first target registered with the specified type - - Type of target - - - - Write to - - Fluent interface parameter. - Method to call on logevent - Layouts to render object[]-args before calling - - - - Write to - - Fluent interface parameter. - Override the default Layout for output - Override the default Encoding for output (Ex. UTF8) - Write to stderr instead of standard output (stdout) - Skip overhead from writing to console, when not available (Ex. running as Windows Service) - Enable batch writing of logevents, instead of Console.WriteLine for each logevent (Requires ) - - - - Write to - - - Override the default Layout for output - Force use independent of - - - - Write to - - - Override the default Layout for output - - - - Write to (when DEBUG-build) - - - Override the default Layout for output - - - - Write to - - Fluent interface parameter. - - Override the default Layout for output - Override the default Encoding for output (Default = UTF8) - Override the default line ending characters (Ex. without CR) - Keep log file open instead of opening and closing it on each logging event - Activate multi-process synchronization using global mutex on the operating system - Size in bytes where log files will be automatically archived. - Maximum number of archive files that should be kept. - Maximum days of archive files that should be kept. - - - - Applies target wrapper for existing - - Fluent interface parameter. - Factory method for creating target-wrapper - - - - Applies for existing for asynchronous background writing - - Fluent interface parameter. - Action to take when queue overflows - Queue size limit for pending logevents - Batch size when writing on the background thread - - - - Applies for existing for throttled writing - - Fluent interface parameter. - Buffer size limit for pending logevents - Timeout for when the buffer will flush automatically using background thread - Restart timeout when logevent is written - Action to take when buffer overflows - - - - Applies for existing for flushing after conditional event - - Fluent interface parameter. - Method delegate that controls whether logevent should force flush. - Only flush when triggers (Ignore config-reload and config-shutdown) - - - - Applies for existing for retrying after failure - - Fluent interface parameter. - Number of retries that should be attempted on the wrapped target in case of a failure. - Time to wait between retries - - - - Applies for existing to fallback on failure. - - Fluent interface parameter. - Target to use for fallback - Whether to return to the first target after any successful write - - - - Extension methods to setup general option before loading NLog LoggingConfiguration - - - - - Configures the global time-source used for all logevents - - - Available by default: , , , - - - - - Configures the global time-source used for all logevents to use - - - - - Configures the global time-source used for all logevents to use - - - - - Updates the dictionary ${gdc:item=} with the name-value-pair - - - - - Sets whether to automatically call on AppDomain.Unload or AppDomain.ProcessExit - - - - - Sets the default culture info to use as . - - - - - Sets the global log level threshold. Log events below this threshold are not logged. - - - - - Gets or sets a value indicating whether should be thrown on configuration errors - - - - - Mark Assembly as hidden, so Assembly methods are excluded when resolving ${callsite} from StackTrace - - - - - 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 - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : AsyncTaskTarget - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private async Task SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - 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 - - - - - - - - Override this to provide async task for writing a single logevent. - - 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 provide async task for writing a 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 - - - - Block for override. Instead override - - - - - Block for override. Instead override - - - - - - - - Write to queue without locking - - - - - - Block for override. Instead override - - - - - LogEvent is written to target, but target failed to successfully initialize - - Enqueue logevent for later processing when target failed to initialize because of unresolved service dependency. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 send the log messages to the standard error instead of the standard output. - - - - - - 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. - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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 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 activate internal buffering to allow batch writing, instead of using - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - - - - Outputs log messages through - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - - - - - - - Outputs the rendered logging event through - - The logging event. - - - - Mock target - useful for testing. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets the number of times this target has been called. - - - - - - Gets the last message rendered by this target. - - - - - - - - - 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. - serialization 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. - serialization 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. - serialization 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 beginning 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. - - - See NLog Wiki - - 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. - - - - 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - KeepFileOpen = true gives the best performance, and ensure the file-lock is not lost to other applications.
- KeepFileOpen = false gives the best compability, but slow performance and lead to file-locking issues with other applications. -
- -
- - - 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. Zero or negative means disabled. - - - - - - Gets or sets the maximum number of seconds before open files are flushed. Zero or negative means disabled. - - - - - - 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. - - Defaults to true for UTF-16 and UTF-32 - - - - - - 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. - - - Notice when combined with then it will attempt to append to any existing - archive file if grown above size multiple times. New archive file will be created when using - - - - - - 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. - - - - - - 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. - - - - - Writes the specified logging event to a file specified in the FileName - parameter. - - The logging event. - - - - Get full filename (=absolute) and cleaned if needed. - - - - - - - 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. - - - - - 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 occurring day of the week to return a DateTime for. - The DateTime of the next occurring 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 filenames - - - - 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. - - - - Check if archive operation should check previous filename, because FileAppenderCache tells us current filename no longer exists - - - - - 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. - - - - Initialize 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. - - - - 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. - The name of the file inside the archive. - - - - 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. - - - - Options for JSON serialization - - - - - 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 - - - - - 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. - - - - - - - - - - - - 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. - - - - - - - - - - - Sends log messages by email using SMTP protocol. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 - - - - - - - - - - - - - - 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 in memory for programmatic retrieval. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 to - - 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 layout that should be use to calculate the value for 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 fallback value when result value is not available - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Calls the specified static method on each log message and passes contextual parameters to it. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - - - 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. - - - - Arguments for events. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Provides a value to use with events that do not have event data. - - - - - Creates new instance of NetworkTargetLogEventDroppedEventArgs - - - - - The reason why log was dropped - - - - - The reason why log event was dropped by - - - - - Discarded LogEvent because message is bigger than - - - - - Discarded LogEvent because message queue was bigger than - - - - - Discarded LogEvent because attempted to open more than connections - - - - - Sends log messages over the network. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. -

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - Name of the target. - - - - Gets or sets the network address. - - - The network address can be: -
    -
  • tcp://host:port - TCP (auto select IPv4/IPv6)
  • -
  • tcp4://host:port - force TCP/IPv4
  • -
  • tcp6://host:port - force TCP/IPv6
  • -
  • udp://host:port - UDP (auto select IPv4/IPv6)
  • -
  • udp4://host:port - force UDP/IPv4
  • -
  • udp6://host:port - force UDP/IPv6
  • -
  • 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. On limit breach then action is activated. - - - - - - Gets or sets the maximum simultaneous connections. Requires = false - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more connections than . - - - - - - Gets or sets the maximum queue size for a single connection. Requires = true - - - When having reached the maximum limit, then action will apply. - - - - - - Gets or sets the action that should be taken, when more pending messages than . - - - - - - Occurs when LogEvent has been dropped. - - - - When internal queue is full and set to
- - When connection-list is full and set to
- - When message is too big and set to
-
-
- - - Gets or sets the size of the connection cache (number of connections which are kept alive). Requires = true - - - - - - Gets or sets the action that should be taken if the message is larger than - - - For TCP sockets then means no-limit, as TCP sockets - performs splitting automatically. - - For UDP Network sender then means splitting the message - into smaller chunks. This can be useful on networks using DontFragment, which drops network packages - larger than MTU-size (1472 bytes). - - - - - - Gets or sets the encoding to be used. - - - - - - Gets or sets 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 - - - - - - Type of compression for protocol payload. Useful for UDP where datagram max-size is 8192 bytes. - - - - - Skip compression when protocol payload is below limit to reduce overhead in cpu-usage and additional headers - - - - - Flush any pending log messages asynchronously (in case of asynchronous targets). - - The asynchronous continuation. - - - - - - - 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. - - - - Type of compression for protocol payload - - - - - No compression - - - - - GZip optimal compression - - - - - GZip fastest compression - - - - - The action to be taken when there are more connections then the max. - - - - - Allow new connections when reaching max connection limit - - - - - Just allow it. - - - - - Discard new messages when reaching max connection limit - - - - - 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. Only relevant for UDP sockets, as TCP sockets does it automatically. - - - Udp-Network-Sender will split the message into smaller chunks that matches . - This can avoid network-package-drop when network uses DontFragment and message is larger than MTU-size (1472 bytes). - - - - - Discard the entire message. - - - - - 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. - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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 whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include log4j:NDC in output from nested context. - - - - - - Gets or sets the separator for operation-states-stack. - - - - - - Gets or sets the option to include all properties from the log events - - - - - - 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 stack separator for log4j:NDC in output from nested context. - - - - - - Gets or sets the stack separator for log4j:NDC in output from nested context. - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

- 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. - - - - - Initializes a new instance of the class. - - Name of the target. - - - - Does nothing. Optionally it calculates the layout text but - discards the results. - - 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 - - - - - - NLog Layout are by default threadsafe, so multiple threads can be rendering logevents at the same time. - This ensure high concurrency with no lock-congestion for the application-threads, especially when using - or AsyncTaskTarget. - - But if using custom or that are not - threadsafe, then this option can enabled to protect against thread-concurrency-issues. Allowing one - to update to NLog 5.0 without having to fix custom/external layout-dependencies. - - - - - - 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. - - - - - 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. - - - - - - - - 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. - - - - LogEvent is written to target, but target failed to successfully initialize - - - - - 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 before writing starts - - - - - Closes the target to release any initialized resources - - - - - Flush any pending log messages - - The asynchronous continuation parameter must be called on flush completed - The asynchronous continuation to be called on flush completed. - - - - Writes logging event to the target destination - - 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. - - - - 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, 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 logevent into a string-result using the provided layout - - The layout. - The logevent info. - String representing log event. - - - - Renders the logevent into a result-value by using the provided layout - - - The layout. - The logevent info. - Fallback value when no value available - Result value when available, else fallback to defaultValue - - - - Resolve from DI - - Avoid calling this while handling a LogEvent, since random deadlocks can occur. - - - - Should the exception be rethrown? - - Upgrade to private protected when using C# 7.2 - - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Register a custom Target. - - Short-cut for registering to default - Type of the Target. - The target type-alias for use in NLog configuration - - - - Marks class as logging target and attaches a type-alias name for use in NLog configuration. - - - - - Initializes a new instance of the class. - - The target type-alias for use in NLog configuration. - - - - 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 the type of the property. - - - - - - Gets or sets the fallback value when result value is not available - - - - - - Gets or sets when an empty value should cause the property to be included - - - - - - Render Result Value - - Log event for rendering - Result value when available, else fallback to defaultValue - - - - Represents target that supports context capture of Properties + Nested-states - - - See NLog Wiki - - - [Target("MyFirst")] - public sealed class MyFirstTarget : TargetWithContext - { - public MyFirstTarget() - { - this.Host = "localhost"; - } - - [RequiredParameter] - public Layout Host { get; set; } - - protected override void Write(LogEventInfo logEvent) - { - string logMessage = this.RenderLogEvent(this.Layout, logEvent); - string hostName = this.RenderLogEvent(this.Host, logEvent); - return SendTheMessageToRemoteHost(hostName, logMessage); - } - - private void SendTheMessageToRemoteHost(string hostName, string message) - { - // To be implemented - } - } - - Documentation on NLog Wiki - - - - - - - - Gets or sets the option to include all properties from the log events - - - - - - Gets or sets whether to include the contents of the properties-dictionary. - - - - - - Gets or sets whether to include the contents of the nested-state-stack. - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - List of property names to exclude when is true - - - - - - 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 dictionary for the - - - Dictionary with ScopeContext properties 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 - - - Collection with NDC context if any, else null - - - - Returns the captured snapshot of nested states from for the - - - Collection of nested state objects if any, else null - - - - Returns the captured snapshot of for the - - - Collection 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 - - - - Takes snapshot of dictionary for the - - - Optional pre-allocated dictionary for the snapshot - Dictionary with ScopeContext properties 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 - - - - Take snapshot of a single object value from dictionary - - Log event - ScopeContext Dictionary key - ScopeContext Dictionary value - Snapshot of ScopeContext property-value - Include object value in snapshot - - - - Takes snapshot of for the - - - Collection 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 - - - Collection with NDLC context if any, else null - - - - Takes snapshot of nested states from for the - - - Collection with stack items 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 from nested states - - Log event - nested state value - Snapshot of stack item 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 properties-dictionary - - - Internal Layout that allows capture of nested-states-stack - - - - Represents target that supports string formatting using layouts. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - Gets or sets the layout used to format log messages. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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:withexception=true} - - - - - Gets or sets the text to be rendered. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - Force 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:withexception=true} - - - - - Initializes a new instance of the class. - - - The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message:withexception=true} - - 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. - - - See NLog Wiki - - 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: -

- -

- 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 value of the User-agent HTTP header. - - - - - - 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 - - - Changing ProxyType on Net5 (or newer) will turn off Http-connection-pooling - - - - - - 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. - - - - - - - - - - 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 - 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. - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and set to - - - - - 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

- Asynchronous target wrapper allows the logger code to execute more quickly, by queuing - 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: -

- -

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

- -
-
- - - 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) - - - - - - Occurs when LogEvent has been dropped, because internal queue is full and set to - - - - - Occurs when internal queue size is growing, because internal queue is full and 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 number of batches of 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. - - - See NLog Wiki - - Documentation on NLog Wiki - -

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

- -

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

- -
-
- - - 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 - - If not explicitly set, then disabled by default for and AsyncTaskTarget - - - - - - Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - Name of the target - - - - Initializes a new instance of the class. - - The wrapped 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - 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. - - - - - - - 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. - - - - - - - - - - - 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 - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, but fallback will be handled individually - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - The log event. - - - - - - - Forwards the log event to the sub-targets until one of them succeeds. - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - A target that buffers log events and sends them in batches to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - Identifier to perform group-by - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - - - - Initializes a new instance of the class. - - The name of the target. - The wrapped target. - Group by identifier. - - - - - - - - - - Limits the number of messages written per timespan to the wrapped target. - - - See NLog Wiki - - Documentation on NLog Wiki - - - - 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 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. - - - - - Initializes a new instance of the class. - - LogEvent that have been dropped - - - - Instance of that was dropped by - - - - - Raises by when - queue is full - and set to - By default queue doubles it size. - - - - - Initializes a new instance of the class. - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - - - Gets or sets whether to enable batching, and only apply single delay when a whole batch fails - - - - - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - See NLog Wiki - - 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: -

- -

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

- -
-
- - - 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. - - - - 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. - - - - - - - - - - - - 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. - - The Time type-alias for use in NLog configuration. - - - - Indicates that the value of the marked element could be null sometimes, - so checking for null is required 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 can 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. - - - public void Foo([ItemNotNull]List<string> books) - { - foreach (var book in books) { - if (book != null) // Warning: Expression is always true - Console.WriteLine(book.ToUpper()); - } - } - - - - - 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. - - - public void Foo([ItemCanBeNull]List<string> books) - { - foreach (var book in books) - { - // Warning: Possible 'System.NullReferenceException' - Console.WriteLine(book.ToUpper()); - } - } - - - - - Indicates that the marked method builds string by the format pattern and (optional) arguments. - The parameter, which contains the format string, should be given in the 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 the format string - - - - - Indicates that the marked parameter is a message template where placeholders are to be replaced by the following arguments - in the order in which they appear - - - void LogInfo([StructuredMessageTemplate]string message, params object[] args) { /* do something */ } - - void Foo() { - LogInfo("User created: {username}"); // Warning: Non-existing argument in format string - } - - - - - Use this annotation to specify a type that contains static or const fields - with values for the annotated property/field/parameter. - The specified type will be used to improve completion suggestions. - - - namespace TestNamespace - { - public class Constants - { - public static int INT_CONST = 1; - public const string STRING_CONST = "1"; - } - - public class Class1 - { - [ValueProvider("TestNamespace.Constants")] public int myField; - public void Foo([ValueProvider("TestNamespace.Constants")] string str) { } - - public void Test() - { - Foo(/*try completion here*/);// - myField = /*try completion here*/ - } - } - } - - - - - Indicates that the integral value falls into the specified interval. - It's allowed to specify multiple non-intersecting intervals. - Values of interval boundaries are inclusive. - - - void Foo([ValueRange(0, 100)] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the integral value never falls below zero. - - - void Foo([NonNegativeValue] int value) { - if (value == -1) { // Warning: Expression is always 'false' - ... - } - } - - - - - Indicates that the function argument should be a string literal and match - one of the parameters of the caller function. This annotation is used for parameters - like 'string paramName' parameter of the constructor. - - - 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 the method has a single input parameter, its name could be omitted.
- Using halt (or void/nothing, which is the same) for the method output - means that the method 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 the semicolon. There is no notion of order rows, all rows are checked - for applicability and applied per each program state tracked by the analysis engine.
-
- - - [ContractAnnotation("=> halt")] - public void TerminationMethod() - - - [ContractAnnotation("null <= param:null")] // reverse condition syntax - public string GetName(string surname) - - - [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 whether the marked element should be localized. - - - [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 be ignored by usage-checking inspections.
- You can use and - to configure how this attribute is applied. -
- - [UsedImplicitly] - public class TypeConverter {} - - public class SummaryData - { - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedWithFixedConstructorSignature)] - public SummaryData() {} - } - - [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors | ImplicitUseTargetFlags.Default)] - public interface IService {} - -
- - - Can be applied to attributes, type parameters, and parameters of a type assignable from . - When applied to an attribute, the decorated attribute behaves the same as . - When applied to a type parameter or to a parameter of type , - indicates that the corresponding type is used implicitly. - - - - - Specifies the details of implicitly used symbol when it is marked - with or . - - - - 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. - - - - Specifies what is considered to be used implicitly when marked - with or . - - - - Members of the type marked with the attribute are considered used. - - - Inherited entities are considered used. - - - Entity marked with the 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 the 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 can only be invoked during method execution - (the delegate can be invoked zero or multiple times, but not stored to some field and invoked later, - when the containing method is no longer on the execution stack). - If the parameter is an enumerable, indicates that it is enumerated while the method is executed. - If is true, the attribute will only takes effect if the method invocation is located under the 'await' expression. - - - - - Require the method invocation to be used under the 'await' expression for this attribute to take effect on code analysis engine. - Can be used for delegate/enumerable parameters of 'async' methods. - - - - - 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); // Warning: Return value of pure method is not used - } - - - - - Indicates that the return value of the method invocation must be used. - - - Methods decorated with this attribute (in contrast to pure methods) might change state, - but make no sense without using their return value.
- Similarly to , this attribute - will help to detect usages of the method when the return value is not used. - Optionally, you can specify a message to use when showing warnings, e.g. - [MustUseReturnValue("Use the return value to...")]. -
-
- - - This annotation allows to enforce allocation-less usage patterns of delegates for performance-critical APIs. - When this annotation is applied to the parameter of delegate type, IDE checks the input argument of this parameter: - * When lambda expression or anonymous method is passed as an argument, IDE verifies that the passed closure - has no captures of the containing local variables and the compiler is able to cache the delegate instance - to avoid heap allocations. Otherwise the warning is produced. - * IDE warns when method name or local function name is passed as an argument as this always results - in heap allocation of the delegate instance. - - - In C# 9.0 code IDE would also suggest to annotate the anonymous function with 'static' modifier - to make use of the similar analysis provided by the language/compiler. - - - - - Indicates the type member or parameter of some type, that should be used instead of all other ways - to get the value of 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 code completion - as a 'Source Template'. When the extension method is completed over some expression, its 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. - - - - - Indicates how method, constructor invocation, or property access - over collection type affects the contents of the collection. - When applied to a return value of a method indicates if the returned collection - is created exclusively for the caller (CollectionAccessType.UpdatedContent) or - can be read/updated from outside (CollectionAccessType.Read | CollectionAccessType.UpdatedContent) - Use to specify the access type. - - - Using this attribute only makes sense if all collection methods are marked with this attribute. - - - public class MyStringCollection : List<string> - { - [CollectionAccess(CollectionAccessType.Read)] - public string GetFirstString() - { - return this.ElementAt(0); - } - } - class Test - { - public void Foo() - { - // Warning: Contents of the collection is never updated - var col = new MyStringCollection(); - string x = col.GetFirstString(); - } - } - - - - - Provides a value for the to define - how the collection method invocation affects the contents 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 the 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 the method is a 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 a parameter is not enumerated. - Use this annotation to suppress the 'Possible multiple enumeration of IEnumerable' inspection. - - - static void ThrowIfNull<T>([NoEnumeration] T v, string n) where T : class - { - // custom check for null but no enumeration - } - - void Foo(IEnumerable<string> values) - { - ThrowIfNull(values, nameof(values)); - var x = values.ToList(); // No warnings about multiple enumeration - } - - - - - Indicates that the marked parameter, field, or property is a regular expression pattern. - - - - - Language of injected code fragment inside marked by string literal. - - - - - Indicates that the marked parameter, field, or property is accepting a string literal - containing code fragment in a language specified by the . - - - void Foo([LanguageInjection(InjectedLanguage.CSS, Prefix = "body{", Suffix = "}")] string cssProps) - { - // cssProps should only contains a list of CSS properties - } - - - - Specify a language of injected code fragment. - - - Specify a string that "precedes" injected string literal. - - - Specify a string that "follows" injected string literal. - - - - Prevents the Member Reordering feature from tossing members of the marked class. - - - The attribute must be mentioned in your member reordering patterns. - - - - From 9f7e9d916b44d92357627fb398e364e107abe7f0 Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 14 Dec 2022 11:24:19 +0100 Subject: [PATCH 73/88] Minor modification on code and design. --- instat/dlgDescribeTwoVarGraph.vb | 22 +++++++--- instat/sdgPairPlotOptions.Designer.vb | 58 +++++++++++---------------- instat/sdgPairPlotOptions.vb | 18 +++------ 3 files changed, 45 insertions(+), 53 deletions(-) diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index afc8cb8d94d..2dfd294fe18 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -547,7 +547,7 @@ Public Class dlgDescribeTwoVarGraph If rdoBy.Checked Then ucrBase.OKEnabled(Not ucrReceiverFirstVars.IsEmpty AndAlso Not ucrReceiverSecondVar.IsEmpty AndAlso ucrSaveGraph.IsComplete) Else - ucrBase.OKEnabled(Not ucrReceiverFirstVars.IsEmpty AndAlso Not ucrReceiverColour.IsEmpty) + ucrBase.OKEnabled(Not ucrReceiverFirstVars.IsEmpty) End If End Sub @@ -968,12 +968,8 @@ Public Class dlgDescribeTwoVarGraph ucrReceiverFirstVars.ucrMultipleVariables.Clear() ucrReceiverFirstVars.SetMeAsReceiver() If rdoBy.Checked Then - cmdOptions.Visible = True - cmdPairOptions.Visible = False ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(True, bIsCategoricalNumeric:=True) Else - cmdOptions.Visible = False - cmdPairOptions.Visible = True ucrReceiverFirstVars.ucrMultipleVariables.SetSingleTypeStatus(False) End If If bRCodeSet Then @@ -988,6 +984,7 @@ Public Class dlgDescribeTwoVarGraph EnableVisibleLabelControls() AddRemoveColourParameter() ChangeGeomToMosaicAndFacet() + HideShowOptions() End Sub Private Sub ucrSelectorTwoVarGraph_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrSelectorTwoVarGraph.ControlValueChanged @@ -1003,8 +1000,23 @@ Public Class dlgDescribeTwoVarGraph Private Sub ucrReceiverColour_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverColour.ControlValueChanged AddRemoveColourParameter() + HideShowOptions() End Sub + Private Sub HideShowOptions() + If rdoPairs.Checked Then + cmdOptions.Visible = False + cmdPairOptions.Visible = True + If Not ucrReceiverColour.IsEmpty Then + cmdPairOptions.Enabled = True + Else + cmdPairOptions.Enabled = False + End If + Else + cmdPairOptions.Visible = False + cmdOptions.Visible = True + End If + End Sub Private Sub AddRemoveColourParameter() If Not ucrReceiverColour.IsEmpty And rdoPairs.Checked Then clsGGpairsFunction.AddParameter("colour", clsRFunctionParameter:=clsGGpairAesFunction, bIncludeArgumentName:=False, iPosition:=2) diff --git a/instat/sdgPairPlotOptions.Designer.vb b/instat/sdgPairPlotOptions.Designer.vb index 31cf26d0867..859df509766 100644 --- a/instat/sdgPairPlotOptions.Designer.vb +++ b/instat/sdgPairPlotOptions.Designer.vb @@ -23,61 +23,33 @@ Partial Class sdgPairPlotOptions _ Private Sub InitializeComponent() Me.tpLegend = New System.Windows.Forms.TabPage() - Me.tbInventory = New System.Windows.Forms.TabControl() - Me.ucrButtonsInventoryplot = New instat.ucrButtonsSubdialogue() - Me.ucrChkShowLegend = New instat.ucrCheck() Me.ucrInputLegendPosition = New instat.ucrInputComboBox() Me.ucrChkLegendPosition = New instat.ucrCheck() + Me.tbInventory = New System.Windows.Forms.TabControl() + Me.ucrButtonsInventoryplot = New instat.ucrButtonsSubdialogue() Me.tpLegend.SuspendLayout() Me.tbInventory.SuspendLayout() Me.SuspendLayout() ' 'tpLegend ' - Me.tpLegend.Controls.Add(Me.ucrChkShowLegend) Me.tpLegend.Controls.Add(Me.ucrInputLegendPosition) Me.tpLegend.Controls.Add(Me.ucrChkLegendPosition) Me.tpLegend.Location = New System.Drawing.Point(4, 22) Me.tpLegend.Name = "tpLegend" Me.tpLegend.Padding = New System.Windows.Forms.Padding(3) - Me.tpLegend.Size = New System.Drawing.Size(299, 62) + Me.tpLegend.Size = New System.Drawing.Size(291, 36) Me.tpLegend.TabIndex = 3 Me.tpLegend.Text = "Legend" Me.tpLegend.UseVisualStyleBackColor = True ' - 'tbInventory - ' - Me.tbInventory.Controls.Add(Me.tpLegend) - Me.tbInventory.Location = New System.Drawing.Point(3, 0) - Me.tbInventory.Name = "tbInventory" - Me.tbInventory.SelectedIndex = 0 - Me.tbInventory.Size = New System.Drawing.Size(307, 88) - Me.tbInventory.TabIndex = 2 - ' - 'ucrButtonsInventoryplot - ' - Me.ucrButtonsInventoryplot.AutoSize = True - Me.ucrButtonsInventoryplot.Location = New System.Drawing.Point(46, 94) - Me.ucrButtonsInventoryplot.Name = "ucrButtonsInventoryplot" - Me.ucrButtonsInventoryplot.Size = New System.Drawing.Size(224, 30) - Me.ucrButtonsInventoryplot.TabIndex = 4 - ' - 'ucrChkShowLegend - ' - Me.ucrChkShowLegend.AutoSize = True - Me.ucrChkShowLegend.Checked = False - Me.ucrChkShowLegend.Location = New System.Drawing.Point(7, 5) - Me.ucrChkShowLegend.Name = "ucrChkShowLegend" - Me.ucrChkShowLegend.Size = New System.Drawing.Size(204, 23) - Me.ucrChkShowLegend.TabIndex = 2 - ' 'ucrInputLegendPosition ' Me.ucrInputLegendPosition.AddQuotesIfUnrecognised = True Me.ucrInputLegendPosition.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink Me.ucrInputLegendPosition.GetSetSelectedIndex = -1 Me.ucrInputLegendPosition.IsReadOnly = False - Me.ucrInputLegendPosition.Location = New System.Drawing.Point(154, 33) + Me.ucrInputLegendPosition.Location = New System.Drawing.Point(154, 3) Me.ucrInputLegendPosition.Name = "ucrInputLegendPosition" Me.ucrInputLegendPosition.Size = New System.Drawing.Size(134, 25) Me.ucrInputLegendPosition.TabIndex = 1 @@ -86,16 +58,33 @@ Partial Class sdgPairPlotOptions ' Me.ucrChkLegendPosition.AutoSize = True Me.ucrChkLegendPosition.Checked = False - Me.ucrChkLegendPosition.Location = New System.Drawing.Point(7, 35) + Me.ucrChkLegendPosition.Location = New System.Drawing.Point(7, 5) Me.ucrChkLegendPosition.Name = "ucrChkLegendPosition" Me.ucrChkLegendPosition.Size = New System.Drawing.Size(204, 23) Me.ucrChkLegendPosition.TabIndex = 0 ' + 'tbInventory + ' + Me.tbInventory.Controls.Add(Me.tpLegend) + Me.tbInventory.Location = New System.Drawing.Point(3, 0) + Me.tbInventory.Name = "tbInventory" + Me.tbInventory.SelectedIndex = 0 + Me.tbInventory.Size = New System.Drawing.Size(299, 62) + Me.tbInventory.TabIndex = 2 + ' + 'ucrButtonsInventoryplot + ' + Me.ucrButtonsInventoryplot.AutoSize = True + Me.ucrButtonsInventoryplot.Location = New System.Drawing.Point(46, 64) + Me.ucrButtonsInventoryplot.Name = "ucrButtonsInventoryplot" + Me.ucrButtonsInventoryplot.Size = New System.Drawing.Size(224, 30) + Me.ucrButtonsInventoryplot.TabIndex = 4 + ' 'sdgPairPlotOptions ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(314, 128) + Me.ClientSize = New System.Drawing.Size(311, 98) Me.Controls.Add(Me.ucrButtonsInventoryplot) Me.Controls.Add(Me.tbInventory) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow @@ -115,6 +104,5 @@ Partial Class sdgPairPlotOptions Friend WithEvents ucrInputLegendPosition As ucrInputComboBox Friend WithEvents ucrChkLegendPosition As ucrCheck Friend WithEvents tbInventory As TabControl - Friend WithEvents ucrChkShowLegend As ucrCheck Friend WithEvents ucrButtonsInventoryplot As ucrButtonsSubdialogue End Class diff --git a/instat/sdgPairPlotOptions.vb b/instat/sdgPairPlotOptions.vb index f179e8217d1..cf9928a2ce7 100644 --- a/instat/sdgPairPlotOptions.vb +++ b/instat/sdgPairPlotOptions.vb @@ -27,10 +27,6 @@ Public Class sdgPairPlotOptions Public Sub InitialiseControls() Dim dctLegendPosition As New Dictionary(Of String, String) - ucrChkShowLegend.SetText("Show Legend") - ucrChkShowLegend.AddParameterPresentCondition(True, "show_legend") - ucrChkShowLegend.AddParameterPresentCondition(False, "show_legend", False) - ucrChkLegendPosition.SetText("Legend Position") ucrChkLegendPosition.AddToLinkedControls(ucrInputLegendPosition, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:="None") ucrInputLegendPosition.SetDropDownStyleAsNonEditable() @@ -56,7 +52,6 @@ Public Class sdgPairPlotOptions InitialiseControls() End If If bReset Then - ucrChkShowLegend.SetRCode(clsGGpairsFunction, bReset, bCloneIfNeeded:=True) ucrChkLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) ucrInputLegendPosition.SetRCode(clsPairThemesFunction, bReset, bCloneIfNeeded:=True) End If @@ -65,16 +60,13 @@ Public Class sdgPairPlotOptions Private Sub ucrChkLegendPosition_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkLegendPosition.ControlValueChanged, ucrInputLegendPosition.ControlValueChanged If ucrChkLegendPosition.Checked Then clsPairOperator.AddParameter("right", clsRFunctionParameter:=clsPairThemesFunction, iPosition:=1) + If ucrInputLegendPosition.GetText = "None" Then + clsGGpairsFunction.RemoveParameterByName("legend") + Else + clsGGpairsFunction.AddParameter("legend", 1, iPosition:=2) + End If Else clsPairOperator.RemoveParameterByName("right") End If End Sub - - Private Sub ucrChkShowLegend_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkShowLegend.ControlValueChanged - If ucrChkShowLegend.Checked Then - clsGGpairsFunction.AddParameter("legend", 1, iPosition:=2) - Else - clsGGpairsFunction.RemoveParameterByName("legend") - End If - End Sub End Class \ No newline at end of file From bd41ea185a407716b934b9f3aba35750767eb12a Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 14 Dec 2022 11:25:20 +0100 Subject: [PATCH 74/88] Minor modification on code --- instat/dlgDescribeTwoVarGraph.vb | 2 +- instat/sdgPairPlotOptions.vb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index 2dfd294fe18..846f2c4cf5a 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -53,7 +53,6 @@ Public Class dlgDescribeTwoVarGraph Private strFirstVariablesType, strSecondVariableType As String - Private dctThemeFunctions As Dictionary(Of String, RFunction) Private bFirstLoad As Boolean = True Private bReset As Boolean = True @@ -866,6 +865,7 @@ Public Class dlgDescribeTwoVarGraph sdgPairPlotOptions.ShowDialog() bResetSubdialog = False End Sub + Private Sub SetFreeYAxis() Dim clsScaleParam As RParameter Dim strXName As String diff --git a/instat/sdgPairPlotOptions.vb b/instat/sdgPairPlotOptions.vb index cf9928a2ce7..2d2de9bb207 100644 --- a/instat/sdgPairPlotOptions.vb +++ b/instat/sdgPairPlotOptions.vb @@ -24,6 +24,7 @@ Public Class sdgPairPlotOptions Private Sub sdgPairPlotOptions_Load(sender As Object, e As EventArgs) Handles MyBase.Load autoTranslate(Me) End Sub + Public Sub InitialiseControls() Dim dctLegendPosition As New Dictionary(Of String, String) From 920dc0366366589960f1abe6b2e8583a68f2d889 Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 14 Dec 2022 21:07:39 +0100 Subject: [PATCH 75/88] Minor change --- instat/dlgLinePlot.designer.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/dlgLinePlot.designer.vb b/instat/dlgLinePlot.designer.vb index f8840caa6e3..9d5dac9896f 100644 --- a/instat/dlgLinePlot.designer.vb +++ b/instat/dlgLinePlot.designer.vb @@ -818,7 +818,7 @@ Partial Class dlgLinePlot ' Me.ucrChkValley.AutoSize = True Me.ucrChkValley.Checked = False - Me.ucrChkValley.Location = New System.Drawing.Point(161, 385) + Me.ucrChkValley.Location = New System.Drawing.Point(161, 389) Me.ucrChkValley.Name = "ucrChkValley" Me.ucrChkValley.Size = New System.Drawing.Size(146, 23) Me.ucrChkValley.TabIndex = 27 From 80004b1148298d0051082c1b1990af1257310d2e Mon Sep 17 00:00:00 2001 From: Barbra2020 Date: Fri, 16 Dec 2022 12:51:08 +0300 Subject: [PATCH 76/88] making before as default --- instat/dlgMakeDate.vb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/instat/dlgMakeDate.vb b/instat/dlgMakeDate.vb index da052b3e780..f03019ea06e 100644 --- a/instat/dlgMakeDate.vb +++ b/instat/dlgMakeDate.vb @@ -335,8 +335,6 @@ Public Class dlgMakeDate ucrSaveDate.SetRCode(clsDateFunction, bReset) - ucrSaveDate.SetRCode(clsDateFunction, bReset) - ucrInputUnits.SetRCode(clsMultiplicationOperator, bReset) ucrReceiverForDate.SetRCode(clsDivisionOperator, bReset) ucrInputFormat.SetRCode(clsDateFunction, bReset) @@ -481,7 +479,8 @@ Public Class dlgMakeDate SelectorHeader() End Sub - Private Sub AllControls_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrPnlDate.ControlValueChanged + Private Sub AllControls_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrPnlDate.ControlValueChanged, ucrReceiverForDate.ControlValueChanged, + ucrReceiverDayTwo.ControlValueChanged, ucrReceiverDayTwo.ControlValueChanged, ucrReceiverYearThree.ControlValueChanged, ucrReceiverMonthThree.ControlValueChanged, ucrReceiverDayThree.ControlValueChanged GroupBoxSettings() End Sub @@ -490,6 +489,7 @@ Public Class dlgMakeDate ucrBase.clsRsyntax.SetBaseRFunction(clsDateFunction) ucrReceiverForDate.SetMeAsReceiver() ucrSaveDate.setLinkedReceiver(ucrReceiverForDate) + ucrSaveDate.SetAssignToBooleans(bTempInsertColumnBefore:=False) grpSingleColumn.Show() grpTwoColumns.Hide() grpThreeColumns.Hide() @@ -498,6 +498,7 @@ Public Class dlgMakeDate ElseIf rdoTwoColumns.Checked Then ucrBase.clsRsyntax.SetBaseRFunction(clsMakeYearDay) ucrSaveDate.setLinkedReceiver(ucrReceiverYearTwo) + ucrSaveDate.SetAssignToBooleans(bTempInsertColumnBefore:=True) ucrReceiverYearTwo.SetMeAsReceiver() ucrReceiverYearTwo.SetIncludedDataTypes({"numeric"}) ucrReceiverDayTwo.SetIncludedDataTypes({"numeric"}) @@ -520,6 +521,7 @@ Public Class dlgMakeDate ucrReceiverDayThree.SetMeAsReceiver() ucrSaveDate.setLinkedReceiver(ucrReceiverDayThree) End If + ucrSaveDate.SetAssignToBooleans(bTempInsertColumnBefore:=True) grpSingleColumn.Hide() grpTwoColumns.Hide() grpThreeColumns.Show() From 451c2f3e1feaf9201860d6945e6f1188ba9b96e3 Mon Sep 17 00:00:00 2001 From: anastasia-mbithe Date: Mon, 19 Dec 2022 17:04:10 +0300 Subject: [PATCH 77/88] Adding the complex group --- instat/dlgCalculator.vb | 5 ++-- instat/ucrCalculator.Designer.vb | 44 ++++++++++++++++++++++++++++++++ instat/ucrCalculator.vb | 44 +++++++++++++++++++++++++++++++- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/instat/dlgCalculator.vb b/instat/dlgCalculator.vb index 2e1203f7f9d..ca4d8a68d32 100644 --- a/instat/dlgCalculator.vb +++ b/instat/dlgCalculator.vb @@ -27,8 +27,7 @@ Public Class dlgCalculator Private iBasicWidth As Integer Private strDefaultKeyboard As String ' Note: This list needs to be updated when a new keyboard is added. - Private strKeyboards() As String = {"Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Circular", "Wakefield", "Modifier", "Symbols", "HydroGOF", "Integer"} - + Private strKeyboards() As String = {"Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Circular", "Wakefield", "Modifier", "Symbols", "HydroGOF", "Integer", "Complex"} Private Sub dlgCalculator_Load(sender As Object, e As EventArgs) Handles MyBase.Load If bFirstLoad Then @@ -189,6 +188,8 @@ Public Class dlgCalculator ucrBase.iHelpTopicID = 598 Case "Integer" Me.Width = iBasicWidth * 1.5 + Case "Complex" + Me.Width = iBasicWidth * 1.5 Case Else Me.Width = iBasicWidth End Select diff --git a/instat/ucrCalculator.Designer.vb b/instat/ucrCalculator.Designer.vb index 02ebcac7755..ed542e5aadb 100644 --- a/instat/ucrCalculator.Designer.vb +++ b/instat/ucrCalculator.Designer.vb @@ -496,6 +496,9 @@ Partial Class ucrCalculator Me.ucrInputCalOptions = New instat.ucrInputComboBox() Me.ucrSelectorForCalculations = New instat.ucrSelectorByDataFrameAddRemove() Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression() + Me.grpComplex = New System.Windows.Forms.GroupBox() + Me.cmdAsComplex = New System.Windows.Forms.Button() + Me.cmdReal = New System.Windows.Forms.Button() Me.grpBasic.SuspendLayout() Me.grpDates.SuspendLayout() Me.grpInteger.SuspendLayout() @@ -516,6 +519,7 @@ Partial Class ucrCalculator Me.grpCircular.SuspendLayout() Me.grpModifier.SuspendLayout() Me.grpSymbols.SuspendLayout() + Me.grpComplex.SuspendLayout() Me.SuspendLayout() ' 'lblExpression @@ -5873,11 +5877,47 @@ Partial Class ucrCalculator Me.ucrReceiverForCalculation.TabIndex = 120 Me.ucrReceiverForCalculation.ucrSelector = Nothing ' + 'grpComplex + ' + Me.grpComplex.Controls.Add(Me.cmdReal) + Me.grpComplex.Controls.Add(Me.cmdAsComplex) + Me.grpComplex.Location = New System.Drawing.Point(434, 69) + Me.grpComplex.Name = "grpComplex" + Me.grpComplex.Size = New System.Drawing.Size(200, 100) + Me.grpComplex.TabIndex = 198 + Me.grpComplex.TabStop = False + Me.grpComplex.Text = "Complex" + ' + 'cmdAsComplex + ' + Me.cmdAsComplex.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdAsComplex.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdAsComplex.Location = New System.Drawing.Point(5, 19) + Me.cmdAsComplex.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdAsComplex.Name = "cmdAsComplex" + Me.cmdAsComplex.Size = New System.Drawing.Size(57, 30) + Me.cmdAsComplex.TabIndex = 176 + Me.cmdAsComplex.Text = "complex" + Me.cmdAsComplex.UseVisualStyleBackColor = True + ' + 'cmdReal + ' + Me.cmdReal.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdReal.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdReal.Location = New System.Drawing.Point(64, 19) + Me.cmdReal.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdReal.Name = "cmdReal" + Me.cmdReal.Size = New System.Drawing.Size(57, 30) + Me.cmdReal.TabIndex = 177 + Me.cmdReal.Text = "real" + Me.cmdReal.UseVisualStyleBackColor = True + ' 'ucrCalculator ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True + Me.Controls.Add(Me.grpComplex) Me.Controls.Add(Me.grpProbabilty) Me.Controls.Add(Me.grpSummary) Me.Controls.Add(Me.grpInteger) @@ -5927,6 +5967,7 @@ Partial Class ucrCalculator Me.grpCircular.ResumeLayout(False) Me.grpModifier.ResumeLayout(False) Me.grpSymbols.ResumeLayout(False) + Me.grpComplex.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -6392,4 +6433,7 @@ Partial Class ucrCalculator Friend WithEvents cmduni_integer As Button Friend WithEvents cmdRan_normal As Button Friend WithEvents cmduniform As Button + Friend WithEvents grpComplex As GroupBox + Friend WithEvents cmdReal As Button + Friend WithEvents cmdAsComplex As Button End Class diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index 75f9749722d..dfece25c095 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -59,7 +59,7 @@ Public Class ucrCalculator End Sub Public Sub InitialiseControls() - ucrInputCalOptions.SetItems({"Basic", "Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Wakefield", "Circular", "hydroGOF", "Integer"}) ' "Rows" is a temp. name + ucrInputCalOptions.SetItems({"Basic", "Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Wakefield", "Circular", "hydroGOF", "Integer", "Complex"}) ' "Rows" is a temp. name ucrInputCalOptions.SetDropDownStyleAsNonEditable() ucrReceiverForCalculation.Selector = ucrSelectorForCalculations @@ -446,6 +446,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.38, iBaseHeight) Case "Logical and Symbols" strPackageName = "base" @@ -467,6 +468,7 @@ Public Class ucrCalculator grpModifier.Visible = False grpSymbols.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Case "Summary" strPackageName = "base" grpDates.Visible = False @@ -487,6 +489,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Case "Text/Strings (Character Columns)" strPackageName = "stringr" grpDates.Visible = False @@ -506,6 +509,7 @@ Public Class ucrCalculator grpSymbols.Visible = True grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.42, iBaseHeight) Case "Factor" strPackageName = "base" @@ -527,6 +531,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Case "Probability" strPackageName = "stats" grpDates.Visible = False @@ -546,6 +551,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.57, iBaseHeight) Case "Dates/Times" strPackageName = "lubridate" @@ -566,6 +572,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.32, iBaseHeight) Case "Transform" strPackageName = "dplyr" @@ -586,6 +593,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.47, iBaseHeight) Case "Wakefield" strPackageName = "wakefield" @@ -606,6 +614,7 @@ Public Class ucrCalculator grpModifier.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.8, iBaseHeight) Case "Circular" strPackageName = "circular" @@ -626,6 +635,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.39, iBaseHeight) Case "hydroGOF" strPackageName = "hydroGOF" @@ -646,6 +656,7 @@ Public Class ucrCalculator grpModifier.Visible = False grpSymbols.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.27, iBaseHeight) Case "Integer" strPackageName = "gmp" @@ -666,7 +677,29 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = True + grpComplex.Visible = False Me.Size = New Size(iBasicWidth * 1.5, iBaseHeight) + Case "Complex" + strPackageName = "base" + grpSummary.Visible = False + grpMaths.Visible = False + grpLogical.Visible = False + grpBasic.Visible = True + grpTestString.Visible = False + cmdStringRHelp.Visible = False + cmdWakefieldHelp.Visible = False + grpFactor.Visible = False + grpProbabilty.Visible = False + grpTransform.Visible = False + grpDates.Visible = False + grpCircular.Visible = False + grpWakefield.Visible = False + grpModifier.Visible = False + grpSymbols.Visible = False + grpHydroGOF.Visible = False + grpInteger.Visible = False + grpComplex.Visible = True + Me.Size = New Size(iBasicWidth * 1.3, iBaseHeight) Case "Basic" grpSummary.Visible = False grpMaths.Visible = False @@ -686,6 +719,7 @@ Public Class ucrCalculator grpSymbols.Visible = False grpHydroGOF.Visible = False grpInteger.Visible = False + grpComplex.Visible = False Case Else grpDates.Visible = False Me.Size = New Size(iBasicWidth, iBaseHeight) @@ -4699,4 +4733,12 @@ Public Class ucrCalculator ucrReceiverForCalculation.AddToReceiverAtCursorPosition(clsSampleFunction.ToScript, 36) End Sub + + Private Sub cmdAsComplex_Click(sender As Object, e As EventArgs) Handles cmdAsComplex.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("as.complex(x = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("as.complex( )", 1) + End If + End Sub End Class From de2c4b217cb0f4ea89d21ca0a30459eada925a68 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Tue, 20 Dec 2022 08:58:40 +0100 Subject: [PATCH 78/88] Added Complex number to Calculator --- instat/ucrCalculator.Designer.vb | 161 ++++++++++++++++++++++++++++--- instat/ucrCalculator.vb | 74 +++++++++++++- 2 files changed, 220 insertions(+), 15 deletions(-) diff --git a/instat/ucrCalculator.Designer.vb b/instat/ucrCalculator.Designer.vb index ed542e5aadb..aa7e57005d9 100644 --- a/instat/ucrCalculator.Designer.vb +++ b/instat/ucrCalculator.Designer.vb @@ -497,8 +497,17 @@ Partial Class ucrCalculator Me.ucrSelectorForCalculations = New instat.ucrSelectorByDataFrameAddRemove() Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression() Me.grpComplex = New System.Windows.Forms.GroupBox() - Me.cmdAsComplex = New System.Windows.Forms.Button() + Me.cmdComplexExp = New System.Windows.Forms.Button() + Me.cmdComplexRound = New System.Windows.Forms.Button() + Me.cmdComplexLog = New System.Windows.Forms.Button() + Me.cmdComplexSqrt = New System.Windows.Forms.Button() + Me.cmdConjugate = New System.Windows.Forms.Button() + Me.cmdArg = New System.Windows.Forms.Button() + Me.cmdMod = New System.Windows.Forms.Button() + Me.cmdImaginary = New System.Windows.Forms.Button() Me.cmdReal = New System.Windows.Forms.Button() + Me.cmdAsComplex = New System.Windows.Forms.Button() + Me.cmdComplexRHelp = New System.Windows.Forms.Button() Me.grpBasic.SuspendLayout() Me.grpDates.SuspendLayout() Me.grpInteger.SuspendLayout() @@ -5879,38 +5888,153 @@ Partial Class ucrCalculator ' 'grpComplex ' + Me.grpComplex.Controls.Add(Me.cmdComplexRHelp) + Me.grpComplex.Controls.Add(Me.cmdComplexExp) + Me.grpComplex.Controls.Add(Me.cmdComplexRound) + Me.grpComplex.Controls.Add(Me.cmdComplexLog) + Me.grpComplex.Controls.Add(Me.cmdComplexSqrt) + Me.grpComplex.Controls.Add(Me.cmdConjugate) + Me.grpComplex.Controls.Add(Me.cmdArg) + Me.grpComplex.Controls.Add(Me.cmdMod) + Me.grpComplex.Controls.Add(Me.cmdImaginary) Me.grpComplex.Controls.Add(Me.cmdReal) Me.grpComplex.Controls.Add(Me.cmdAsComplex) Me.grpComplex.Location = New System.Drawing.Point(434, 69) Me.grpComplex.Name = "grpComplex" - Me.grpComplex.Size = New System.Drawing.Size(200, 100) + Me.grpComplex.Size = New System.Drawing.Size(307, 135) Me.grpComplex.TabIndex = 198 Me.grpComplex.TabStop = False Me.grpComplex.Text = "Complex" ' + 'cmdComplexExp + ' + Me.cmdComplexExp.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexExp.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexExp.Location = New System.Drawing.Point(127, 54) + Me.cmdComplexExp.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexExp.Name = "cmdComplexExp" + Me.cmdComplexExp.Size = New System.Drawing.Size(63, 30) + Me.cmdComplexExp.TabIndex = 192 + Me.cmdComplexExp.Text = "exp" + Me.cmdComplexExp.UseVisualStyleBackColor = True + ' + 'cmdComplexRound + ' + Me.cmdComplexRound.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexRound.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexRound.Location = New System.Drawing.Point(245, 54) + Me.cmdComplexRound.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexRound.Name = "cmdComplexRound" + Me.cmdComplexRound.Size = New System.Drawing.Size(57, 30) + Me.cmdComplexRound.TabIndex = 191 + Me.cmdComplexRound.Text = "round" + Me.cmdComplexRound.UseVisualStyleBackColor = True + ' + 'cmdComplexLog + ' + Me.cmdComplexLog.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexLog.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexLog.Location = New System.Drawing.Point(189, 54) + Me.cmdComplexLog.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexLog.Name = "cmdComplexLog" + Me.cmdComplexLog.Size = New System.Drawing.Size(57, 30) + Me.cmdComplexLog.TabIndex = 190 + Me.cmdComplexLog.Text = "log" + Me.cmdComplexLog.UseVisualStyleBackColor = True + ' + 'cmdComplexSqrt + ' + Me.cmdComplexSqrt.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexSqrt.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexSqrt.Location = New System.Drawing.Point(70, 54) + Me.cmdComplexSqrt.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexSqrt.Name = "cmdComplexSqrt" + Me.cmdComplexSqrt.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexSqrt.TabIndex = 189 + Me.cmdComplexSqrt.Text = "sqrt" + Me.cmdComplexSqrt.UseVisualStyleBackColor = True + ' + 'cmdConjugate + ' + Me.cmdConjugate.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdConjugate.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdConjugate.Location = New System.Drawing.Point(5, 54) + Me.cmdConjugate.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdConjugate.Name = "cmdConjugate" + Me.cmdConjugate.Size = New System.Drawing.Size(65, 30) + Me.cmdConjugate.TabIndex = 188 + Me.cmdConjugate.Text = "conjugate" + Me.cmdConjugate.UseVisualStyleBackColor = True + ' + 'cmdArg + ' + Me.cmdArg.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdArg.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdArg.Location = New System.Drawing.Point(245, 25) + Me.cmdArg.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdArg.Name = "cmdArg" + Me.cmdArg.Size = New System.Drawing.Size(57, 30) + Me.cmdArg.TabIndex = 187 + Me.cmdArg.Text = "arg" + Me.cmdArg.UseVisualStyleBackColor = True + ' + 'cmdMod + ' + Me.cmdMod.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdMod.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdMod.Location = New System.Drawing.Point(189, 25) + Me.cmdMod.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdMod.Name = "cmdMod" + Me.cmdMod.Size = New System.Drawing.Size(57, 30) + Me.cmdMod.TabIndex = 186 + Me.cmdMod.Text = "mod" + Me.cmdMod.UseVisualStyleBackColor = True + ' + 'cmdImaginary + ' + Me.cmdImaginary.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdImaginary.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdImaginary.Location = New System.Drawing.Point(127, 25) + Me.cmdImaginary.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdImaginary.Name = "cmdImaginary" + Me.cmdImaginary.Size = New System.Drawing.Size(63, 30) + Me.cmdImaginary.TabIndex = 185 + Me.cmdImaginary.Text = "imaginary" + Me.cmdImaginary.UseVisualStyleBackColor = True + ' + 'cmdReal + ' + Me.cmdReal.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdReal.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdReal.Location = New System.Drawing.Point(70, 25) + Me.cmdReal.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdReal.Name = "cmdReal" + Me.cmdReal.Size = New System.Drawing.Size(58, 30) + Me.cmdReal.TabIndex = 177 + Me.cmdReal.Text = "real" + Me.cmdReal.UseVisualStyleBackColor = True + ' 'cmdAsComplex ' Me.cmdAsComplex.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdAsComplex.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdAsComplex.Location = New System.Drawing.Point(5, 19) + Me.cmdAsComplex.Location = New System.Drawing.Point(5, 25) Me.cmdAsComplex.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdAsComplex.Name = "cmdAsComplex" - Me.cmdAsComplex.Size = New System.Drawing.Size(57, 30) + Me.cmdAsComplex.Size = New System.Drawing.Size(65, 30) Me.cmdAsComplex.TabIndex = 176 Me.cmdAsComplex.Text = "complex" Me.cmdAsComplex.UseVisualStyleBackColor = True ' - 'cmdReal + 'cmdComplexRHelp ' - Me.cmdReal.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) - Me.cmdReal.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdReal.Location = New System.Drawing.Point(64, 19) - Me.cmdReal.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) - Me.cmdReal.Name = "cmdReal" - Me.cmdReal.Size = New System.Drawing.Size(57, 30) - Me.cmdReal.TabIndex = 177 - Me.cmdReal.Text = "real" - Me.cmdReal.UseVisualStyleBackColor = True + Me.cmdComplexRHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexRHelp.Location = New System.Drawing.Point(228, 90) + Me.cmdComplexRHelp.Name = "cmdComplexRHelp" + Me.cmdComplexRHelp.Size = New System.Drawing.Size(75, 23) + Me.cmdComplexRHelp.TabIndex = 198 + Me.cmdComplexRHelp.Text = "R Help" + Me.cmdComplexRHelp.UseVisualStyleBackColor = True ' 'ucrCalculator ' @@ -6436,4 +6560,13 @@ Partial Class ucrCalculator Friend WithEvents grpComplex As GroupBox Friend WithEvents cmdReal As Button Friend WithEvents cmdAsComplex As Button + Friend WithEvents cmdComplexExp As Button + Friend WithEvents cmdComplexRound As Button + Friend WithEvents cmdComplexLog As Button + Friend WithEvents cmdComplexSqrt As Button + Friend WithEvents cmdConjugate As Button + Friend WithEvents cmdArg As Button + Friend WithEvents cmdMod As Button + Friend WithEvents cmdImaginary As Button + Friend WithEvents cmdComplexRHelp As Button End Class diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index dfece25c095..345e4748e72 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -1504,7 +1504,7 @@ Public Class ucrCalculator iCallType:=2, bSeparateThread:=False, bUpdateGrids:=False) End Sub - Private Sub cmdHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, cmdHydroHelp.Click, cmdCircularHelp.Click, cmdWakefieldHelp.Click, cmdMathsHelp.Click, cmdLogicalHelp.Click, cmdProbRHelp.Click, cmdStringRHelp.Click + Private Sub cmdHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, cmdHydroHelp.Click, cmdCircularHelp.Click, cmdWakefieldHelp.Click, cmdMathsHelp.Click, cmdLogicalHelp.Click, cmdProbRHelp.Click, cmdStringRHelp.Click, cmdComplexRHelp.Click OpenHelpPage() End Sub @@ -4741,4 +4741,76 @@ Public Class ucrCalculator ucrReceiverForCalculation.AddToReceiverAtCursorPosition("as.complex( )", 1) End If End Sub + + Private Sub cmdReal_Click(sender As Object, e As EventArgs) Handles cmdReal.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Re(z = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Re( )", 1) + End If + End Sub + + Private Sub cmdImaginary_Click(sender As Object, e As EventArgs) Handles cmdImaginary.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Im(z = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Im( )", 1) + End If + End Sub + + Private Sub cmdMod_Click(sender As Object, e As EventArgs) Handles cmdMod.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Mod(z = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Mod( )", 1) + End If + End Sub + + Private Sub cmdArg_Click(sender As Object, e As EventArgs) Handles cmdArg.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Arg(z = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Arg( )", 1) + End If + End Sub + + Private Sub cmdConjugate_Click(sender As Object, e As EventArgs) Handles cmdConjugate.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Conj(z = )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("Conj( )", 1) + End If + End Sub + + Private Sub cmdComplexLog_Click(sender As Object, e As EventArgs) Handles cmdComplexLog.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("log(x= , base=exp(1))", 14) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("log()", 1) + End If + End Sub + + Private Sub cmdComplexSqrt_Click_1(sender As Object, e As EventArgs) Handles cmdComplexSqrt.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sqrt(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sqrt()", 1) + End If + End Sub + + Private Sub cmdComplexRound_Click(sender As Object, e As EventArgs) Handles cmdComplexRound.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("round(x= , digits=0)", 11) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("round()", 1) + End If + End Sub + + Private Sub cmdComplexExp_Click_1(sender As Object, e As EventArgs) Handles cmdComplexExp.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("exp(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("exp()", 1) + End If + End Sub End Class From a0d33e5b8dd1d3e9370f43a0d8ea423be9f9a189 Mon Sep 17 00:00:00 2001 From: Barbra2020 Date: Wed, 21 Dec 2022 09:58:18 +0300 Subject: [PATCH 79/88] code changes --- instat/dlgColumnStructures.vb | 1 - instat/static/InstatObject/R/labels_and_defaults.R | 1 - 2 files changed, 2 deletions(-) diff --git a/instat/dlgColumnStructures.vb b/instat/dlgColumnStructures.vb index 1d82ba63cf9..b3647b84cd0 100644 --- a/instat/dlgColumnStructures.vb +++ b/instat/dlgColumnStructures.vb @@ -31,7 +31,6 @@ Public Class dlgColumnStructure End If SetRCodeForControls(bReset) bReset = False - SetColumnStructureInReceiver() TestOKEnabled() autoTranslate(Me) End Sub diff --git a/instat/static/InstatObject/R/labels_and_defaults.R b/instat/static/InstatObject/R/labels_and_defaults.R index 6ed365153a8..20e73817247 100644 --- a/instat/static/InstatObject/R/labels_and_defaults.R +++ b/instat/static/InstatObject/R/labels_and_defaults.R @@ -61,7 +61,6 @@ overall_label="[Overall]" graph_label="graph" table_label="table" model_label="model" -structure_label = "structure" summary_label = "summary" #link labels From cb553872895d5042882a27bd0097165b74ed7729 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Wed, 21 Dec 2022 13:23:58 +0100 Subject: [PATCH 80/88] Adding more keys to Complex keyboard --- instat/ucrCalculator.Designer.vb | 373 ++++++++++++++++++++++--------- instat/ucrCalculator.resx | 3 + instat/ucrCalculator.vb | 88 +++++++- 3 files changed, 361 insertions(+), 103 deletions(-) diff --git a/instat/ucrCalculator.Designer.vb b/instat/ucrCalculator.Designer.vb index aa7e57005d9..92956485d7f 100644 --- a/instat/ucrCalculator.Designer.vb +++ b/instat/ucrCalculator.Designer.vb @@ -491,12 +491,20 @@ Partial Class ucrCalculator Me.cmdbegin = New System.Windows.Forms.Button() Me.cmdAny1 = New System.Windows.Forms.Button() Me.cmdStringRHelp = New System.Windows.Forms.Button() - Me.ucrSaveResultInto = New instat.ucrSave() - Me.ucrTryCalculator = New instat.ucrTry() - Me.ucrInputCalOptions = New instat.ucrInputComboBox() - Me.ucrSelectorForCalculations = New instat.ucrSelectorByDataFrameAddRemove() - Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression() Me.grpComplex = New System.Windows.Forms.GroupBox() + Me.cmdComplexRHelp = New instat.ucrSplitButton() + Me.ContextMenuStripComplex = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ComplexBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.cmdComplexTanH = New System.Windows.Forms.Button() + Me.cmdComplexTan = New System.Windows.Forms.Button() + Me.cmdComplexPi = New System.Windows.Forms.Button() + Me.cmdComplexDeg = New System.Windows.Forms.Button() + Me.cmdComplexRad = New System.Windows.Forms.Button() + Me.cmdComplexSignif = New System.Windows.Forms.Button() + Me.cmdComplexCosH = New System.Windows.Forms.Button() + Me.cmdComplexSinH = New System.Windows.Forms.Button() + Me.cmdComplexCos = New System.Windows.Forms.Button() + Me.cmdComplexSin = New System.Windows.Forms.Button() Me.cmdComplexExp = New System.Windows.Forms.Button() Me.cmdComplexRound = New System.Windows.Forms.Button() Me.cmdComplexLog = New System.Windows.Forms.Button() @@ -507,7 +515,11 @@ Partial Class ucrCalculator Me.cmdImaginary = New System.Windows.Forms.Button() Me.cmdReal = New System.Windows.Forms.Button() Me.cmdAsComplex = New System.Windows.Forms.Button() - Me.cmdComplexRHelp = New System.Windows.Forms.Button() + Me.ucrSaveResultInto = New instat.ucrSave() + Me.ucrTryCalculator = New instat.ucrTry() + Me.ucrInputCalOptions = New instat.ucrInputComboBox() + Me.ucrSelectorForCalculations = New instat.ucrSelectorByDataFrameAddRemove() + Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression() Me.grpBasic.SuspendLayout() Me.grpDates.SuspendLayout() Me.grpInteger.SuspendLayout() @@ -529,6 +541,7 @@ Partial Class ucrCalculator Me.grpModifier.SuspendLayout() Me.grpSymbols.SuspendLayout() Me.grpComplex.SuspendLayout() + Me.ContextMenuStripComplex.SuspendLayout() Me.SuspendLayout() ' 'lblExpression @@ -5830,65 +5843,19 @@ Partial Class ucrCalculator Me.cmdStringRHelp.Text = "R Help" Me.cmdStringRHelp.UseVisualStyleBackColor = True ' - 'ucrSaveResultInto - ' - Me.ucrSaveResultInto.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrSaveResultInto.Location = New System.Drawing.Point(11, 311) - Me.ucrSaveResultInto.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.ucrSaveResultInto.Name = "ucrSaveResultInto" - Me.ucrSaveResultInto.Size = New System.Drawing.Size(327, 22) - Me.ucrSaveResultInto.TabIndex = 196 - ' - 'ucrTryCalculator - ' - Me.ucrTryCalculator.AutoSize = True - Me.ucrTryCalculator.Location = New System.Drawing.Point(1, 256) - Me.ucrTryCalculator.Margin = New System.Windows.Forms.Padding(4) - Me.ucrTryCalculator.Name = "ucrTryCalculator" - Me.ucrTryCalculator.RunCommandAsMultipleLines = False - Me.ucrTryCalculator.Size = New System.Drawing.Size(396, 33) - Me.ucrTryCalculator.TabIndex = 194 - ' - 'ucrInputCalOptions - ' - Me.ucrInputCalOptions.AddQuotesIfUnrecognised = True - Me.ucrInputCalOptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrInputCalOptions.GetSetSelectedIndex = -1 - Me.ucrInputCalOptions.IsReadOnly = False - Me.ucrInputCalOptions.Location = New System.Drawing.Point(226, 41) - Me.ucrInputCalOptions.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) - Me.ucrInputCalOptions.Name = "ucrInputCalOptions" - Me.ucrInputCalOptions.Size = New System.Drawing.Size(137, 22) - Me.ucrInputCalOptions.TabIndex = 180 - ' - 'ucrSelectorForCalculations - ' - Me.ucrSelectorForCalculations.AutoSize = True - Me.ucrSelectorForCalculations.bDropUnusedFilterLevels = False - Me.ucrSelectorForCalculations.bShowHiddenColumns = False - Me.ucrSelectorForCalculations.bUseCurrentFilter = True - Me.ucrSelectorForCalculations.Location = New System.Drawing.Point(0, 64) - Me.ucrSelectorForCalculations.Margin = New System.Windows.Forms.Padding(0) - Me.ucrSelectorForCalculations.Name = "ucrSelectorForCalculations" - Me.ucrSelectorForCalculations.Size = New System.Drawing.Size(213, 183) - Me.ucrSelectorForCalculations.TabIndex = 173 - ' - 'ucrReceiverForCalculation - ' - Me.ucrReceiverForCalculation.AutoSize = True - Me.ucrReceiverForCalculation.frmParent = Nothing - Me.ucrReceiverForCalculation.Location = New System.Drawing.Point(70, 6) - Me.ucrReceiverForCalculation.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) - Me.ucrReceiverForCalculation.Name = "ucrReceiverForCalculation" - Me.ucrReceiverForCalculation.Selector = Nothing - Me.ucrReceiverForCalculation.Size = New System.Drawing.Size(391, 29) - Me.ucrReceiverForCalculation.strNcFilePath = "" - Me.ucrReceiverForCalculation.TabIndex = 120 - Me.ucrReceiverForCalculation.ucrSelector = Nothing - ' 'grpComplex ' Me.grpComplex.Controls.Add(Me.cmdComplexRHelp) + Me.grpComplex.Controls.Add(Me.cmdComplexTanH) + Me.grpComplex.Controls.Add(Me.cmdComplexTan) + Me.grpComplex.Controls.Add(Me.cmdComplexPi) + Me.grpComplex.Controls.Add(Me.cmdComplexDeg) + Me.grpComplex.Controls.Add(Me.cmdComplexRad) + Me.grpComplex.Controls.Add(Me.cmdComplexSignif) + Me.grpComplex.Controls.Add(Me.cmdComplexCosH) + Me.grpComplex.Controls.Add(Me.cmdComplexSinH) + Me.grpComplex.Controls.Add(Me.cmdComplexCos) + Me.grpComplex.Controls.Add(Me.cmdComplexSin) Me.grpComplex.Controls.Add(Me.cmdComplexExp) Me.grpComplex.Controls.Add(Me.cmdComplexRound) Me.grpComplex.Controls.Add(Me.cmdComplexLog) @@ -5901,19 +5868,163 @@ Partial Class ucrCalculator Me.grpComplex.Controls.Add(Me.cmdAsComplex) Me.grpComplex.Location = New System.Drawing.Point(434, 69) Me.grpComplex.Name = "grpComplex" - Me.grpComplex.Size = New System.Drawing.Size(307, 135) + Me.grpComplex.Size = New System.Drawing.Size(288, 226) Me.grpComplex.TabIndex = 198 Me.grpComplex.TabStop = False Me.grpComplex.Text = "Complex" ' + 'cmdComplexRHelp + ' + Me.cmdComplexRHelp.AutoSize = True + Me.cmdComplexRHelp.ContextMenuStrip = Me.ContextMenuStripComplex + Me.cmdComplexRHelp.Location = New System.Drawing.Point(183, 169) + Me.cmdComplexRHelp.Name = "cmdComplexRHelp" + Me.cmdComplexRHelp.Size = New System.Drawing.Size(91, 23) + Me.cmdComplexRHelp.SplitMenuStrip = Me.ContextMenuStripComplex + Me.cmdComplexRHelp.TabIndex = 209 + Me.cmdComplexRHelp.Text = "R Help" + Me.cmdComplexRHelp.UseVisualStyleBackColor = True + ' + 'ContextMenuStripComplex + ' + Me.ContextMenuStripComplex.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ComplexBaseToolStripMenuItem}) + Me.ContextMenuStripComplex.Name = "ContextMenuStrip1" + Me.ContextMenuStripComplex.Size = New System.Drawing.Size(181, 48) + ' + 'ComplexBaseToolStripMenuItem + ' + Me.ComplexBaseToolStripMenuItem.Name = "ComplexBaseToolStripMenuItem" + Me.ComplexBaseToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.ComplexBaseToolStripMenuItem.Text = "base" + ' + 'cmdComplexTanH + ' + Me.cmdComplexTanH.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexTanH.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexTanH.Location = New System.Drawing.Point(212, 104) + Me.cmdComplexTanH.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexTanH.Name = "cmdComplexTanH" + Me.cmdComplexTanH.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexTanH.TabIndex = 208 + Me.cmdComplexTanH.Text = "tanh" + Me.cmdComplexTanH.UseVisualStyleBackColor = True + ' + 'cmdComplexTan + ' + Me.cmdComplexTan.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexTan.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexTan.Location = New System.Drawing.Point(212, 75) + Me.cmdComplexTan.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexTan.Name = "cmdComplexTan" + Me.cmdComplexTan.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexTan.TabIndex = 207 + Me.cmdComplexTan.Text = "tan" + Me.cmdComplexTan.UseVisualStyleBackColor = True + ' + 'cmdComplexPi + ' + Me.cmdComplexPi.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexPi.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexPi.Location = New System.Drawing.Point(212, 133) + Me.cmdComplexPi.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexPi.Name = "cmdComplexPi" + Me.cmdComplexPi.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexPi.TabIndex = 206 + Me.cmdComplexPi.Text = "pi" + Me.cmdComplexPi.UseVisualStyleBackColor = True + ' + 'cmdComplexDeg + ' + Me.cmdComplexDeg.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexDeg.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexDeg.Location = New System.Drawing.Point(212, 46) + Me.cmdComplexDeg.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexDeg.Name = "cmdComplexDeg" + Me.cmdComplexDeg.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexDeg.TabIndex = 205 + Me.cmdComplexDeg.Text = "deg" + Me.cmdComplexDeg.UseVisualStyleBackColor = True + ' + 'cmdComplexRad + ' + Me.cmdComplexRad.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexRad.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexRad.Location = New System.Drawing.Point(212, 17) + Me.cmdComplexRad.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexRad.Name = "cmdComplexRad" + Me.cmdComplexRad.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexRad.TabIndex = 204 + Me.cmdComplexRad.Text = "rad" + Me.cmdComplexRad.UseVisualStyleBackColor = True + ' + 'cmdComplexSignif + ' + Me.cmdComplexSignif.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexSignif.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexSignif.Location = New System.Drawing.Point(147, 133) + Me.cmdComplexSignif.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexSignif.Name = "cmdComplexSignif" + Me.cmdComplexSignif.Size = New System.Drawing.Size(65, 30) + Me.cmdComplexSignif.TabIndex = 203 + Me.cmdComplexSignif.Text = "signif" + Me.cmdComplexSignif.UseVisualStyleBackColor = True + ' + 'cmdComplexCosH + ' + Me.cmdComplexCosH.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexCosH.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexCosH.Location = New System.Drawing.Point(147, 104) + Me.cmdComplexCosH.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexCosH.Name = "cmdComplexCosH" + Me.cmdComplexCosH.Size = New System.Drawing.Size(65, 30) + Me.cmdComplexCosH.TabIndex = 202 + Me.cmdComplexCosH.Text = "cosh" + Me.cmdComplexCosH.UseVisualStyleBackColor = True + ' + 'cmdComplexSinH + ' + Me.cmdComplexSinH.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexSinH.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexSinH.Location = New System.Drawing.Point(89, 104) + Me.cmdComplexSinH.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexSinH.Name = "cmdComplexSinH" + Me.cmdComplexSinH.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexSinH.TabIndex = 201 + Me.cmdComplexSinH.Text = "sinh" + Me.cmdComplexSinH.UseVisualStyleBackColor = True + ' + 'cmdComplexCos + ' + Me.cmdComplexCos.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexCos.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexCos.Location = New System.Drawing.Point(147, 75) + Me.cmdComplexCos.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexCos.Name = "cmdComplexCos" + Me.cmdComplexCos.Size = New System.Drawing.Size(65, 30) + Me.cmdComplexCos.TabIndex = 200 + Me.cmdComplexCos.Text = "cos" + Me.cmdComplexCos.UseVisualStyleBackColor = True + ' + 'cmdComplexSin + ' + Me.cmdComplexSin.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) + Me.cmdComplexSin.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.cmdComplexSin.Location = New System.Drawing.Point(89, 75) + Me.cmdComplexSin.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.cmdComplexSin.Name = "cmdComplexSin" + Me.cmdComplexSin.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexSin.TabIndex = 199 + Me.cmdComplexSin.Text = "sin" + Me.cmdComplexSin.UseVisualStyleBackColor = True + ' 'cmdComplexExp ' Me.cmdComplexExp.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdComplexExp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdComplexExp.Location = New System.Drawing.Point(127, 54) + Me.cmdComplexExp.Location = New System.Drawing.Point(24, 75) Me.cmdComplexExp.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdComplexExp.Name = "cmdComplexExp" - Me.cmdComplexExp.Size = New System.Drawing.Size(63, 30) + Me.cmdComplexExp.Size = New System.Drawing.Size(65, 30) Me.cmdComplexExp.TabIndex = 192 Me.cmdComplexExp.Text = "exp" Me.cmdComplexExp.UseVisualStyleBackColor = True @@ -5922,10 +6033,10 @@ Partial Class ucrCalculator ' Me.cmdComplexRound.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdComplexRound.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdComplexRound.Location = New System.Drawing.Point(245, 54) + Me.cmdComplexRound.Location = New System.Drawing.Point(89, 133) Me.cmdComplexRound.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdComplexRound.Name = "cmdComplexRound" - Me.cmdComplexRound.Size = New System.Drawing.Size(57, 30) + Me.cmdComplexRound.Size = New System.Drawing.Size(58, 30) Me.cmdComplexRound.TabIndex = 191 Me.cmdComplexRound.Text = "round" Me.cmdComplexRound.UseVisualStyleBackColor = True @@ -5934,10 +6045,10 @@ Partial Class ucrCalculator ' Me.cmdComplexLog.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdComplexLog.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdComplexLog.Location = New System.Drawing.Point(189, 54) + Me.cmdComplexLog.Location = New System.Drawing.Point(24, 104) Me.cmdComplexLog.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdComplexLog.Name = "cmdComplexLog" - Me.cmdComplexLog.Size = New System.Drawing.Size(57, 30) + Me.cmdComplexLog.Size = New System.Drawing.Size(65, 30) Me.cmdComplexLog.TabIndex = 190 Me.cmdComplexLog.Text = "log" Me.cmdComplexLog.UseVisualStyleBackColor = True @@ -5946,10 +6057,10 @@ Partial Class ucrCalculator ' Me.cmdComplexSqrt.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdComplexSqrt.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdComplexSqrt.Location = New System.Drawing.Point(70, 54) + Me.cmdComplexSqrt.Location = New System.Drawing.Point(24, 133) Me.cmdComplexSqrt.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdComplexSqrt.Name = "cmdComplexSqrt" - Me.cmdComplexSqrt.Size = New System.Drawing.Size(58, 30) + Me.cmdComplexSqrt.Size = New System.Drawing.Size(65, 30) Me.cmdComplexSqrt.TabIndex = 189 Me.cmdComplexSqrt.Text = "sqrt" Me.cmdComplexSqrt.UseVisualStyleBackColor = True @@ -5958,7 +6069,7 @@ Partial Class ucrCalculator ' Me.cmdConjugate.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdConjugate.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdConjugate.Location = New System.Drawing.Point(5, 54) + Me.cmdConjugate.Location = New System.Drawing.Point(147, 46) Me.cmdConjugate.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdConjugate.Name = "cmdConjugate" Me.cmdConjugate.Size = New System.Drawing.Size(65, 30) @@ -5970,10 +6081,10 @@ Partial Class ucrCalculator ' Me.cmdArg.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdArg.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdArg.Location = New System.Drawing.Point(245, 25) + Me.cmdArg.Location = New System.Drawing.Point(89, 46) Me.cmdArg.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdArg.Name = "cmdArg" - Me.cmdArg.Size = New System.Drawing.Size(57, 30) + Me.cmdArg.Size = New System.Drawing.Size(58, 30) Me.cmdArg.TabIndex = 187 Me.cmdArg.Text = "arg" Me.cmdArg.UseVisualStyleBackColor = True @@ -5982,10 +6093,10 @@ Partial Class ucrCalculator ' Me.cmdMod.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdMod.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdMod.Location = New System.Drawing.Point(189, 25) + Me.cmdMod.Location = New System.Drawing.Point(24, 46) Me.cmdMod.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdMod.Name = "cmdMod" - Me.cmdMod.Size = New System.Drawing.Size(57, 30) + Me.cmdMod.Size = New System.Drawing.Size(65, 30) Me.cmdMod.TabIndex = 186 Me.cmdMod.Text = "mod" Me.cmdMod.UseVisualStyleBackColor = True @@ -5994,10 +6105,10 @@ Partial Class ucrCalculator ' Me.cmdImaginary.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdImaginary.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdImaginary.Location = New System.Drawing.Point(127, 25) + Me.cmdImaginary.Location = New System.Drawing.Point(147, 17) Me.cmdImaginary.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdImaginary.Name = "cmdImaginary" - Me.cmdImaginary.Size = New System.Drawing.Size(63, 30) + Me.cmdImaginary.Size = New System.Drawing.Size(65, 30) Me.cmdImaginary.TabIndex = 185 Me.cmdImaginary.Text = "imaginary" Me.cmdImaginary.UseVisualStyleBackColor = True @@ -6006,7 +6117,7 @@ Partial Class ucrCalculator ' Me.cmdReal.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdReal.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdReal.Location = New System.Drawing.Point(70, 25) + Me.cmdReal.Location = New System.Drawing.Point(89, 17) Me.cmdReal.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdReal.Name = "cmdReal" Me.cmdReal.Size = New System.Drawing.Size(58, 30) @@ -6018,7 +6129,7 @@ Partial Class ucrCalculator ' Me.cmdAsComplex.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) Me.cmdAsComplex.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdAsComplex.Location = New System.Drawing.Point(5, 25) + Me.cmdAsComplex.Location = New System.Drawing.Point(24, 17) Me.cmdAsComplex.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdAsComplex.Name = "cmdAsComplex" Me.cmdAsComplex.Size = New System.Drawing.Size(65, 30) @@ -6026,23 +6137,79 @@ Partial Class ucrCalculator Me.cmdAsComplex.Text = "complex" Me.cmdAsComplex.UseVisualStyleBackColor = True ' - 'cmdComplexRHelp + 'ucrSaveResultInto ' - Me.cmdComplexRHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdComplexRHelp.Location = New System.Drawing.Point(228, 90) - Me.cmdComplexRHelp.Name = "cmdComplexRHelp" - Me.cmdComplexRHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdComplexRHelp.TabIndex = 198 - Me.cmdComplexRHelp.Text = "R Help" - Me.cmdComplexRHelp.UseVisualStyleBackColor = True + Me.ucrSaveResultInto.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrSaveResultInto.Location = New System.Drawing.Point(11, 311) + Me.ucrSaveResultInto.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.ucrSaveResultInto.Name = "ucrSaveResultInto" + Me.ucrSaveResultInto.Size = New System.Drawing.Size(327, 22) + Me.ucrSaveResultInto.TabIndex = 196 + ' + 'ucrTryCalculator + ' + Me.ucrTryCalculator.AutoSize = True + Me.ucrTryCalculator.Location = New System.Drawing.Point(1, 256) + Me.ucrTryCalculator.Margin = New System.Windows.Forms.Padding(4) + Me.ucrTryCalculator.Name = "ucrTryCalculator" + Me.ucrTryCalculator.RunCommandAsMultipleLines = False + Me.ucrTryCalculator.Size = New System.Drawing.Size(396, 33) + Me.ucrTryCalculator.TabIndex = 194 + ' + 'ucrInputCalOptions + ' + Me.ucrInputCalOptions.AddQuotesIfUnrecognised = True + Me.ucrInputCalOptions.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.ucrInputCalOptions.GetSetSelectedIndex = -1 + Me.ucrInputCalOptions.IsReadOnly = False + Me.ucrInputCalOptions.Location = New System.Drawing.Point(226, 41) + Me.ucrInputCalOptions.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.ucrInputCalOptions.Name = "ucrInputCalOptions" + Me.ucrInputCalOptions.Size = New System.Drawing.Size(137, 22) + Me.ucrInputCalOptions.TabIndex = 180 + ' + 'ucrSelectorForCalculations + ' + Me.ucrSelectorForCalculations.AutoSize = True + Me.ucrSelectorForCalculations.bDropUnusedFilterLevels = False + Me.ucrSelectorForCalculations.bShowHiddenColumns = False + Me.ucrSelectorForCalculations.bUseCurrentFilter = True + Me.ucrSelectorForCalculations.Location = New System.Drawing.Point(0, 64) + Me.ucrSelectorForCalculations.Margin = New System.Windows.Forms.Padding(0) + Me.ucrSelectorForCalculations.Name = "ucrSelectorForCalculations" + Me.ucrSelectorForCalculations.Size = New System.Drawing.Size(213, 183) + Me.ucrSelectorForCalculations.TabIndex = 173 + ' + 'ucrReceiverForCalculation + ' + Me.ucrReceiverForCalculation.AutoSize = True + Me.ucrReceiverForCalculation.frmParent = Nothing + Me.ucrReceiverForCalculation.Location = New System.Drawing.Point(70, 6) + Me.ucrReceiverForCalculation.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) + Me.ucrReceiverForCalculation.Name = "ucrReceiverForCalculation" + Me.ucrReceiverForCalculation.Selector = Nothing + Me.ucrReceiverForCalculation.Size = New System.Drawing.Size(391, 29) + Me.ucrReceiverForCalculation.strNcFilePath = "" + Me.ucrReceiverForCalculation.TabIndex = 120 + Me.ucrReceiverForCalculation.ucrSelector = Nothing ' 'ucrCalculator ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True + Me.Controls.Add(Me.cmdWakefieldHelp) + Me.Controls.Add(Me.cmdStringRHelp) + Me.Controls.Add(Me.ucrSaveResultInto) + Me.Controls.Add(Me.ucrTryCalculator) + Me.Controls.Add(Me.grpSymbols) + Me.Controls.Add(Me.chkShowParameters) + Me.Controls.Add(Me.ucrInputCalOptions) + Me.Controls.Add(Me.grpBasic) + Me.Controls.Add(Me.ucrSelectorForCalculations) + Me.Controls.Add(Me.ucrReceiverForCalculation) + Me.Controls.Add(Me.lblExpression) Me.Controls.Add(Me.grpComplex) - Me.Controls.Add(Me.grpProbabilty) Me.Controls.Add(Me.grpSummary) Me.Controls.Add(Me.grpInteger) Me.Controls.Add(Me.grpTransform) @@ -6054,18 +6221,8 @@ Partial Class ucrCalculator Me.Controls.Add(Me.grpFactor) Me.Controls.Add(Me.grpCircular) Me.Controls.Add(Me.grpTestString) - Me.Controls.Add(Me.cmdWakefieldHelp) - Me.Controls.Add(Me.cmdStringRHelp) - Me.Controls.Add(Me.ucrSaveResultInto) - Me.Controls.Add(Me.ucrTryCalculator) - Me.Controls.Add(Me.grpSymbols) + Me.Controls.Add(Me.grpProbabilty) Me.Controls.Add(Me.grpModifier) - Me.Controls.Add(Me.chkShowParameters) - Me.Controls.Add(Me.ucrInputCalOptions) - Me.Controls.Add(Me.grpBasic) - Me.Controls.Add(Me.ucrSelectorForCalculations) - Me.Controls.Add(Me.ucrReceiverForCalculation) - Me.Controls.Add(Me.lblExpression) Me.Name = "ucrCalculator" Me.Size = New System.Drawing.Size(899, 457) Me.grpBasic.ResumeLayout(False) @@ -6092,6 +6249,8 @@ Partial Class ucrCalculator Me.grpModifier.ResumeLayout(False) Me.grpSymbols.ResumeLayout(False) Me.grpComplex.ResumeLayout(False) + Me.grpComplex.PerformLayout() + Me.ContextMenuStripComplex.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -6568,5 +6727,17 @@ Partial Class ucrCalculator Friend WithEvents cmdArg As Button Friend WithEvents cmdMod As Button Friend WithEvents cmdImaginary As Button - Friend WithEvents cmdComplexRHelp As Button + Friend WithEvents cmdComplexTanH As Button + Friend WithEvents cmdComplexTan As Button + Friend WithEvents cmdComplexPi As Button + Friend WithEvents cmdComplexDeg As Button + Friend WithEvents cmdComplexRad As Button + Friend WithEvents cmdComplexSignif As Button + Friend WithEvents cmdComplexCosH As Button + Friend WithEvents cmdComplexSinH As Button + Friend WithEvents cmdComplexCos As Button + Friend WithEvents cmdComplexSin As Button + Friend WithEvents cmdComplexRHelp As ucrSplitButton + Friend WithEvents ContextMenuStripComplex As ContextMenuStrip + Friend WithEvents ComplexBaseToolStripMenuItem As ToolStripMenuItem End Class diff --git a/instat/ucrCalculator.resx b/instat/ucrCalculator.resx index a2840f0e634..b19488cbe6a 100644 --- a/instat/ucrCalculator.resx +++ b/instat/ucrCalculator.resx @@ -129,6 +129,9 @@ 17, 17 + + 721, 24 + 78 diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index 345e4748e72..e2089a0690f 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -59,7 +59,7 @@ Public Class ucrCalculator End Sub Public Sub InitialiseControls() - ucrInputCalOptions.SetItems({"Basic", "Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Wakefield", "Circular", "hydroGOF", "Integer", "Complex"}) ' "Rows" is a temp. name + ucrInputCalOptions.SetItems({"Basic", "Maths", "Logical and Symbols", "Summary", "Text/Strings (Character Columns)", "Factor", "Probability", "Dates/Times", "Transform", "Wakefield", "Circular", "hydroGOF", "Complex", "Integer"}) ' "Rows" is a temp. name ucrInputCalOptions.SetDropDownStyleAsNonEditable() ucrReceiverForCalculation.Selector = ucrSelectorForCalculations @@ -1504,7 +1504,7 @@ Public Class ucrCalculator iCallType:=2, bSeparateThread:=False, bUpdateGrids:=False) End Sub - Private Sub cmdHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, cmdHydroHelp.Click, cmdCircularHelp.Click, cmdWakefieldHelp.Click, cmdMathsHelp.Click, cmdLogicalHelp.Click, cmdProbRHelp.Click, cmdStringRHelp.Click, cmdComplexRHelp.Click + Private Sub cmdHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, cmdHydroHelp.Click, cmdCircularHelp.Click, cmdWakefieldHelp.Click, cmdMathsHelp.Click, cmdLogicalHelp.Click, cmdProbRHelp.Click, cmdStringRHelp.Click OpenHelpPage() End Sub @@ -4595,6 +4595,22 @@ Public Class ucrCalculator OpenHelpPage() End Sub + Private Sub cmdComplexRHelp_Click(sender As Object, e As EventArgs) Handles cmdComplexRHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Complex" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + + Private Sub ComplexBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ComplexBaseToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Complex" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + Private Sub cmduniform_Click(sender As Object, e As EventArgs) Handles cmduniform.Click Dim clsUniformFunction As New RFunction @@ -4813,4 +4829,72 @@ Public Class ucrCalculator ucrReceiverForCalculation.AddToReceiverAtCursorPosition("exp()", 1) End If End Sub + + Private Sub cmdComplexSignif_Click(sender As Object, e As EventArgs) Handles cmdComplexSignif.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("signif(x= , digits=6)", 11) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("signif()", 1) + End If + End Sub + + Private Sub cmdComplexCos_Click(sender As Object, e As EventArgs) Handles cmdComplexCos.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("cos(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("cos()", 1) + End If + End Sub + + Private Sub cmdComplexSin_Click(sender As Object, e As EventArgs) Handles cmdComplexSin.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sin(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sin()", 1) + End If + End Sub + + Private Sub cmdComplexTan_Click(sender As Object, e As EventArgs) Handles cmdComplexTan.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("tan(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("tan()", 1) + End If + End Sub + + Private Sub cmdComplexCosH_Click(sender As Object, e As EventArgs) Handles cmdComplexCosH.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("cosh(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("cosh()", 1) + End If + End Sub + + Private Sub cmdComplexSinH_Click(sender As Object, e As EventArgs) Handles cmdComplexSinH.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sinh(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("sinh()", 1) + End If + End Sub + + Private Sub cmdComplexTanH_Click(sender As Object, e As EventArgs) Handles cmdComplexTanH.Click + If chkShowParameters.Checked Then + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("tanh(x= )", 1) + Else + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("tanh()", 1) + End If + End Sub + + Private Sub cmdComplexRad_Click(sender As Object, e As EventArgs) Handles cmdComplexRad.Click + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("circular::rad()", 1) + End Sub + + Private Sub cmdComplexDeg_Click(sender As Object, e As EventArgs) Handles cmdComplexDeg.Click + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("circular::deg()", 1) + End Sub + + Private Sub cmdComplexPi_Click(sender As Object, e As EventArgs) Handles cmdComplexPi.Click + ucrReceiverForCalculation.AddToReceiverAtCursorPosition("pi") + End Sub End Class From 5179328efca85003b1cfb4cd7da24a7eae06e22a Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Fri, 23 Dec 2022 14:51:09 +0100 Subject: [PATCH 81/88] Included the new R Help button on all calculator keyboards --- instat/ucrCalculator.Designer.vb | 511 +++++++++++++++++++++++-------- instat/ucrCalculator.resx | 36 ++- instat/ucrCalculator.vb | 178 ++++++++++- 3 files changed, 592 insertions(+), 133 deletions(-) diff --git a/instat/ucrCalculator.Designer.vb b/instat/ucrCalculator.Designer.vb index 92956485d7f..a2b21cc49d8 100644 --- a/instat/ucrCalculator.Designer.vb +++ b/instat/ucrCalculator.Designer.vb @@ -40,7 +40,6 @@ Partial Class ucrCalculator Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Me.lblExpression = New System.Windows.Forms.Label() - Me.cmdRHelp = New System.Windows.Forms.Button() Me.chkShowParameters = New System.Windows.Forms.CheckBox() Me.grpBasic = New System.Windows.Forms.GroupBox() Me.cmdClear = New System.Windows.Forms.Button() @@ -63,6 +62,10 @@ Partial Class ucrCalculator Me.cmd0 = New System.Windows.Forms.Button() Me.cmd1 = New System.Windows.Forms.Button() Me.grpDates = New System.Windows.Forms.GroupBox() + Me.cmdRHelp = New instat.ucrSplitButton() + Me.ContextMenuStripDate = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.DateLubridateToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.DateHmsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdPm = New System.Windows.Forms.Button() Me.cmdTime = New System.Windows.Forms.Button() Me.cmdDateTime = New System.Windows.Forms.Button() @@ -82,6 +85,8 @@ Partial Class ucrCalculator Me.cmdMdy = New System.Windows.Forms.Button() Me.cmdYmd = New System.Windows.Forms.Button() Me.cmdLeap = New System.Windows.Forms.Button() + Me.ContextMenuStripComplex = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ComplexBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.grpInteger = New System.Windows.Forms.GroupBox() Me.cmdLucas = New System.Windows.Forms.Button() Me.cmdFactorize = New System.Windows.Forms.Button() @@ -134,7 +139,9 @@ Partial Class ucrCalculator Me.cmdIsPrime = New System.Windows.Forms.Button() Me.cmdBigZ = New System.Windows.Forms.Button() Me.grpFactor = New System.Windows.Forms.GroupBox() - Me.cmdTransformHelp = New System.Windows.Forms.Button() + Me.cmdTransformHelp = New instat.ucrSplitButton() + Me.ContextMenuStripFactor = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.FactorForcatsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdShuffle = New System.Windows.Forms.Button() Me.cmdShift = New System.Windows.Forms.Button() Me.cmdReverse = New System.Windows.Forms.Button() @@ -156,7 +163,9 @@ Partial Class ucrCalculator Me.cmdFactor = New System.Windows.Forms.Button() Me.cmdAnon = New System.Windows.Forms.Button() Me.grpHydroGOF = New System.Windows.Forms.GroupBox() - Me.cmdHydroHelp = New System.Windows.Forms.Button() + Me.cmdHydroHelp = New instat.ucrSplitButton() + Me.ContextMenuStripHydroGOF = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.HydroGOFToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdVE = New System.Windows.Forms.Button() Me.cmdSsq = New System.Windows.Forms.Button() Me.cmdRsr = New System.Windows.Forms.Button() @@ -234,9 +243,10 @@ Partial Class ucrCalculator Me.cmdHair = New System.Windows.Forms.Button() Me.cmdGroup = New System.Windows.Forms.Button() Me.cmdGrade = New System.Windows.Forms.Button() - Me.cmdWakefieldHelp = New System.Windows.Forms.Button() Me.grpMaths = New System.Windows.Forms.GroupBox() - Me.cmdMathsHelp = New System.Windows.Forms.Button() + Me.cmdMathsHelp = New instat.ucrSplitButton() + Me.ContextMenuStripMaths = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.MathsStatsStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdAtan2 = New System.Windows.Forms.Button() Me.cmdLogistic = New System.Windows.Forms.Button() Me.cmdLogit = New System.Windows.Forms.Button() @@ -314,6 +324,10 @@ Partial Class ucrCalculator Me.cmdSum = New System.Windows.Forms.Button() Me.cmdVar = New System.Windows.Forms.Button() Me.grpProbabilty = New System.Windows.Forms.GroupBox() + Me.cmdProbRHelp = New instat.ucrSplitButton() + Me.ContextMenuStripProbability = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ProbStatsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ProbBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.grpRandom = New System.Windows.Forms.GroupBox() Me.cmdnbinomial = New System.Windows.Forms.Button() Me.cmdRan_sample = New System.Windows.Forms.Button() @@ -325,7 +339,6 @@ Partial Class ucrCalculator Me.cmduni_integer = New System.Windows.Forms.Button() Me.cmdRan_normal = New System.Windows.Forms.Button() Me.cmduniform = New System.Windows.Forms.Button() - Me.cmdProbRHelp = New System.Windows.Forms.Button() Me.cmdQnbin = New System.Windows.Forms.Button() Me.cmdQpois = New System.Windows.Forms.Button() Me.cmdQbinom = New System.Windows.Forms.Button() @@ -391,7 +404,10 @@ Partial Class ucrCalculator Me.cmdLead = New System.Windows.Forms.Button() Me.cmdLag = New System.Windows.Forms.Button() Me.grpLogical = New System.Windows.Forms.GroupBox() - Me.cmdLogicalHelp = New System.Windows.Forms.Button() + Me.cmdLogicalHelp = New instat.ucrSplitButton() + Me.ContextMenuStripLogical = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.LogBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.LogDplyrToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdFalse = New System.Windows.Forms.Button() Me.cmdTrue = New System.Windows.Forms.Button() Me.cmdDoubleSqrBrackets = New System.Windows.Forms.Button() @@ -452,7 +468,9 @@ Partial Class ucrCalculator Me.cmdLocate = New System.Windows.Forms.Button() Me.ttCalculator = New System.Windows.Forms.ToolTip(Me.components) Me.grpCircular = New System.Windows.Forms.GroupBox() - Me.cmdCircularHelp = New System.Windows.Forms.Button() + Me.cmdCircularHelp = New instat.ucrSplitButton() + Me.ContextMenuStripCircular = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.CircularToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdCircular = New System.Windows.Forms.Button() Me.cmdCircQuantile = New System.Windows.Forms.Button() Me.cmdCircMax = New System.Windows.Forms.Button() @@ -490,11 +508,8 @@ Partial Class ucrCalculator Me.cmdEnd1 = New System.Windows.Forms.Button() Me.cmdbegin = New System.Windows.Forms.Button() Me.cmdAny1 = New System.Windows.Forms.Button() - Me.cmdStringRHelp = New System.Windows.Forms.Button() Me.grpComplex = New System.Windows.Forms.GroupBox() Me.cmdComplexRHelp = New instat.ucrSplitButton() - Me.ContextMenuStripComplex = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.ComplexBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.cmdComplexTanH = New System.Windows.Forms.Button() Me.cmdComplexTan = New System.Windows.Forms.Button() Me.cmdComplexPi = New System.Windows.Forms.Button() @@ -520,28 +535,49 @@ Partial Class ucrCalculator Me.ucrInputCalOptions = New instat.ucrInputComboBox() Me.ucrSelectorForCalculations = New instat.ucrSelectorByDataFrameAddRemove() Me.ucrReceiverForCalculation = New instat.ucrReceiverExpression() + Me.cmdStringRHelp = New instat.ucrSplitButton() + Me.ContextMenuStripTxtString = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.TxTStringrToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.TxTBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.cmdWakefieldHelp = New instat.ucrSplitButton() + Me.ContextMenuStripWakefield = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.WakefieldToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ContextMenuStripList = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ListBaseToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ListStatsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ListStatipToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.grpBasic.SuspendLayout() Me.grpDates.SuspendLayout() + Me.ContextMenuStripDate.SuspendLayout() + Me.ContextMenuStripComplex.SuspendLayout() Me.grpInteger.SuspendLayout() Me.ContextMenuStripInteger.SuspendLayout() Me.grpFactor.SuspendLayout() + Me.ContextMenuStripFactor.SuspendLayout() Me.grpHydroGOF.SuspendLayout() + Me.ContextMenuStripHydroGOF.SuspendLayout() Me.grpWakefield.SuspendLayout() Me.grpMaths.SuspendLayout() + Me.ContextMenuStripMaths.SuspendLayout() Me.grpSummary.SuspendLayout() Me.ContextMenuStripSummary.SuspendLayout() Me.grpFrequencies.SuspendLayout() Me.grpProbabilty.SuspendLayout() + Me.ContextMenuStripProbability.SuspendLayout() Me.grpRandom.SuspendLayout() Me.grpTransform.SuspendLayout() Me.ContextMenuStripTransform.SuspendLayout() Me.grpLogical.SuspendLayout() + Me.ContextMenuStripLogical.SuspendLayout() Me.grpTestString.SuspendLayout() Me.grpCircular.SuspendLayout() + Me.ContextMenuStripCircular.SuspendLayout() Me.grpModifier.SuspendLayout() Me.grpSymbols.SuspendLayout() Me.grpComplex.SuspendLayout() - Me.ContextMenuStripComplex.SuspendLayout() + Me.ContextMenuStripTxtString.SuspendLayout() + Me.ContextMenuStripWakefield.SuspendLayout() + Me.ContextMenuStripList.SuspendLayout() Me.SuspendLayout() ' 'lblExpression @@ -556,16 +592,6 @@ Partial Class ucrCalculator Me.lblExpression.Tag = "Expression" Me.lblExpression.Text = "Expression:" ' - 'cmdRHelp - ' - Me.cmdRHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdRHelp.Location = New System.Drawing.Point(166, 137) - Me.cmdRHelp.Name = "cmdRHelp" - Me.cmdRHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdRHelp.TabIndex = 182 - Me.cmdRHelp.Text = "R Help" - Me.cmdRHelp.UseVisualStyleBackColor = True - ' 'chkShowParameters ' Me.chkShowParameters.AutoSize = True @@ -825,6 +851,7 @@ Partial Class ucrCalculator ' 'grpDates ' + Me.grpDates.Controls.Add(Me.cmdRHelp) Me.grpDates.Controls.Add(Me.cmdPm) Me.grpDates.Controls.Add(Me.cmdTime) Me.grpDates.Controls.Add(Me.cmdDateTime) @@ -840,7 +867,6 @@ Partial Class ucrCalculator Me.grpDates.Controls.Add(Me.cmdYear) Me.grpDates.Controls.Add(Me.cmdDate) Me.grpDates.Controls.Add(Me.cmdYday) - Me.grpDates.Controls.Add(Me.cmdRHelp) Me.grpDates.Controls.Add(Me.cmdWday) Me.grpDates.Controls.Add(Me.cmdMdy) Me.grpDates.Controls.Add(Me.cmdYmd) @@ -853,6 +879,36 @@ Partial Class ucrCalculator Me.grpDates.TabStop = False Me.grpDates.Text = "Dates/Times" ' + 'cmdRHelp + ' + Me.cmdRHelp.AutoSize = True + Me.cmdRHelp.ContextMenuStrip = Me.ContextMenuStripDate + Me.cmdRHelp.Location = New System.Drawing.Point(148, 135) + Me.cmdRHelp.Name = "cmdRHelp" + Me.cmdRHelp.Size = New System.Drawing.Size(91, 23) + Me.cmdRHelp.SplitMenuStrip = Me.ContextMenuStripDate + Me.cmdRHelp.TabIndex = 212 + Me.cmdRHelp.Text = "R Help" + Me.cmdRHelp.UseVisualStyleBackColor = True + ' + 'ContextMenuStripDate + ' + Me.ContextMenuStripDate.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateLubridateToolStripMenuItem, Me.DateHmsToolStripMenuItem}) + Me.ContextMenuStripDate.Name = "ContextMenuStrip1" + Me.ContextMenuStripDate.Size = New System.Drawing.Size(122, 48) + ' + 'DateLubridateToolStripMenuItem + ' + Me.DateLubridateToolStripMenuItem.Name = "DateLubridateToolStripMenuItem" + Me.DateLubridateToolStripMenuItem.Size = New System.Drawing.Size(121, 22) + Me.DateLubridateToolStripMenuItem.Text = "lubridate" + ' + 'DateHmsToolStripMenuItem + ' + Me.DateHmsToolStripMenuItem.Name = "DateHmsToolStripMenuItem" + Me.DateHmsToolStripMenuItem.Size = New System.Drawing.Size(121, 22) + Me.DateHmsToolStripMenuItem.Text = "hms" + ' 'cmdPm ' Me.cmdPm.ImeMode = System.Windows.Forms.ImeMode.NoControl @@ -1057,6 +1113,18 @@ Partial Class ucrCalculator Me.cmdLeap.Text = "leap" Me.cmdLeap.UseVisualStyleBackColor = True ' + 'ContextMenuStripComplex + ' + Me.ContextMenuStripComplex.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ComplexBaseToolStripMenuItem}) + Me.ContextMenuStripComplex.Name = "ContextMenuStrip1" + Me.ContextMenuStripComplex.Size = New System.Drawing.Size(99, 26) + ' + 'ComplexBaseToolStripMenuItem + ' + Me.ComplexBaseToolStripMenuItem.Name = "ComplexBaseToolStripMenuItem" + Me.ComplexBaseToolStripMenuItem.Size = New System.Drawing.Size(98, 22) + Me.ComplexBaseToolStripMenuItem.Text = "base" + ' 'grpInteger ' Me.grpInteger.Controls.Add(Me.cmdLucas) @@ -1601,21 +1669,35 @@ Partial Class ucrCalculator Me.grpFactor.Margin = New System.Windows.Forms.Padding(2) Me.grpFactor.Name = "grpFactor" Me.grpFactor.Padding = New System.Windows.Forms.Padding(2) - Me.grpFactor.Size = New System.Drawing.Size(248, 199) + Me.grpFactor.Size = New System.Drawing.Size(248, 208) Me.grpFactor.TabIndex = 191 Me.grpFactor.TabStop = False Me.grpFactor.Text = "Factor" ' 'cmdTransformHelp ' - Me.cmdTransformHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdTransformHelp.Location = New System.Drawing.Point(167, 174) + Me.cmdTransformHelp.AutoSize = True + Me.cmdTransformHelp.ContextMenuStrip = Me.ContextMenuStripFactor + Me.cmdTransformHelp.Location = New System.Drawing.Point(151, 175) Me.cmdTransformHelp.Name = "cmdTransformHelp" - Me.cmdTransformHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdTransformHelp.TabIndex = 211 + Me.cmdTransformHelp.Size = New System.Drawing.Size(91, 23) + Me.cmdTransformHelp.SplitMenuStrip = Me.ContextMenuStripFactor + Me.cmdTransformHelp.TabIndex = 212 Me.cmdTransformHelp.Text = "R Help" Me.cmdTransformHelp.UseVisualStyleBackColor = True ' + 'ContextMenuStripFactor + ' + Me.ContextMenuStripFactor.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FactorForcatsToolStripMenuItem}) + Me.ContextMenuStripFactor.Name = "ContextMenuStrip1" + Me.ContextMenuStripFactor.Size = New System.Drawing.Size(111, 26) + ' + 'FactorForcatsToolStripMenuItem + ' + Me.FactorForcatsToolStripMenuItem.Name = "FactorForcatsToolStripMenuItem" + Me.FactorForcatsToolStripMenuItem.Size = New System.Drawing.Size(110, 22) + Me.FactorForcatsToolStripMenuItem.Text = "forcats" + ' 'cmdShuffle ' Me.cmdShuffle.ImeMode = System.Windows.Forms.ImeMode.NoControl @@ -1864,21 +1946,35 @@ Partial Class ucrCalculator Me.grpHydroGOF.Margin = New System.Windows.Forms.Padding(2) Me.grpHydroGOF.Name = "grpHydroGOF" Me.grpHydroGOF.Padding = New System.Windows.Forms.Padding(2) - Me.grpHydroGOF.Size = New System.Drawing.Size(183, 260) + Me.grpHydroGOF.Size = New System.Drawing.Size(183, 269) Me.grpHydroGOF.TabIndex = 195 Me.grpHydroGOF.TabStop = False Me.grpHydroGOF.Text = "hydroGOF " ' 'cmdHydroHelp ' - Me.cmdHydroHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdHydroHelp.Location = New System.Drawing.Point(105, 237) + Me.cmdHydroHelp.AutoSize = True + Me.cmdHydroHelp.ContextMenuStrip = Me.ContextMenuStripHydroGOF + Me.cmdHydroHelp.Location = New System.Drawing.Point(111, 239) Me.cmdHydroHelp.Name = "cmdHydroHelp" - Me.cmdHydroHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdHydroHelp.TabIndex = 183 + Me.cmdHydroHelp.Size = New System.Drawing.Size(68, 23) + Me.cmdHydroHelp.SplitMenuStrip = Me.ContextMenuStripHydroGOF + Me.cmdHydroHelp.TabIndex = 212 Me.cmdHydroHelp.Text = "R Help" Me.cmdHydroHelp.UseVisualStyleBackColor = True ' + 'ContextMenuStripHydroGOF + ' + Me.ContextMenuStripHydroGOF.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.HydroGOFToolStripMenuItem}) + Me.ContextMenuStripHydroGOF.Name = "ContextMenuStrip1" + Me.ContextMenuStripHydroGOF.Size = New System.Drawing.Size(129, 26) + ' + 'HydroGOFToolStripMenuItem + ' + Me.HydroGOFToolStripMenuItem.Name = "HydroGOFToolStripMenuItem" + Me.HydroGOFToolStripMenuItem.Size = New System.Drawing.Size(128, 22) + Me.HydroGOFToolStripMenuItem.Text = "hydroGOF" + ' 'cmdVE ' Me.cmdVE.ImeMode = System.Windows.Forms.ImeMode.NoControl @@ -2779,16 +2875,6 @@ Partial Class ucrCalculator Me.cmdGrade.Text = "grade" Me.cmdGrade.UseVisualStyleBackColor = True ' - 'cmdWakefieldHelp - ' - Me.cmdWakefieldHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdWakefieldHelp.Location = New System.Drawing.Point(782, 39) - Me.cmdWakefieldHelp.Name = "cmdWakefieldHelp" - Me.cmdWakefieldHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdWakefieldHelp.TabIndex = 183 - Me.cmdWakefieldHelp.Text = "R Help" - Me.cmdWakefieldHelp.UseVisualStyleBackColor = True - ' 'grpMaths ' Me.grpMaths.Controls.Add(Me.cmdMathsHelp) @@ -2826,14 +2912,28 @@ Partial Class ucrCalculator ' 'cmdMathsHelp ' - Me.cmdMathsHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdMathsHelp.Location = New System.Drawing.Point(179, 136) + Me.cmdMathsHelp.AutoSize = True + Me.cmdMathsHelp.ContextMenuStrip = Me.ContextMenuStripMaths + Me.cmdMathsHelp.Location = New System.Drawing.Point(176, 132) Me.cmdMathsHelp.Name = "cmdMathsHelp" - Me.cmdMathsHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdMathsHelp.TabIndex = 183 + Me.cmdMathsHelp.Size = New System.Drawing.Size(77, 23) + Me.cmdMathsHelp.SplitMenuStrip = Me.ContextMenuStripMaths + Me.cmdMathsHelp.TabIndex = 211 Me.cmdMathsHelp.Text = "R Help" Me.cmdMathsHelp.UseVisualStyleBackColor = True ' + 'ContextMenuStripMaths + ' + Me.ContextMenuStripMaths.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MathsStatsStripMenuItem}) + Me.ContextMenuStripMaths.Name = "ContextMenuStrip1" + Me.ContextMenuStripMaths.Size = New System.Drawing.Size(99, 26) + ' + 'MathsStatsStripMenuItem + ' + Me.MathsStatsStripMenuItem.Name = "MathsStatsStripMenuItem" + Me.MathsStatsStripMenuItem.Size = New System.Drawing.Size(98, 22) + Me.MathsStatsStripMenuItem.Text = "stats" + ' 'cmdAtan2 ' Me.cmdAtan2.ImeMode = System.Windows.Forms.ImeMode.NoControl @@ -3712,8 +3812,8 @@ Partial Class ucrCalculator ' 'grpProbabilty ' - Me.grpProbabilty.Controls.Add(Me.grpRandom) Me.grpProbabilty.Controls.Add(Me.cmdProbRHelp) + Me.grpProbabilty.Controls.Add(Me.grpRandom) Me.grpProbabilty.Controls.Add(Me.cmdQnbin) Me.grpProbabilty.Controls.Add(Me.cmdQpois) Me.grpProbabilty.Controls.Add(Me.cmdQbinom) @@ -3751,6 +3851,36 @@ Partial Class ucrCalculator Me.grpProbabilty.TabStop = False Me.grpProbabilty.Text = "Probability" ' + 'cmdProbRHelp + ' + Me.cmdProbRHelp.AutoSize = True + Me.cmdProbRHelp.ContextMenuStrip = Me.ContextMenuStripProbability + Me.cmdProbRHelp.Location = New System.Drawing.Point(240, 190) + Me.cmdProbRHelp.Name = "cmdProbRHelp" + Me.cmdProbRHelp.Size = New System.Drawing.Size(68, 23) + Me.cmdProbRHelp.SplitMenuStrip = Me.ContextMenuStripProbability + Me.cmdProbRHelp.TabIndex = 212 + Me.cmdProbRHelp.Text = "R Help" + Me.cmdProbRHelp.UseVisualStyleBackColor = True + ' + 'ContextMenuStripProbability + ' + Me.ContextMenuStripProbability.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ProbStatsToolStripMenuItem, Me.ProbBaseToolStripMenuItem}) + Me.ContextMenuStripProbability.Name = "ContextMenuStrip1" + Me.ContextMenuStripProbability.Size = New System.Drawing.Size(99, 48) + ' + 'ProbStatsToolStripMenuItem + ' + Me.ProbStatsToolStripMenuItem.Name = "ProbStatsToolStripMenuItem" + Me.ProbStatsToolStripMenuItem.Size = New System.Drawing.Size(98, 22) + Me.ProbStatsToolStripMenuItem.Text = "stats" + ' + 'ProbBaseToolStripMenuItem + ' + Me.ProbBaseToolStripMenuItem.Name = "ProbBaseToolStripMenuItem" + Me.ProbBaseToolStripMenuItem.Size = New System.Drawing.Size(98, 22) + Me.ProbBaseToolStripMenuItem.Text = "base" + ' 'grpRandom ' Me.grpRandom.Controls.Add(Me.cmdnbinomial) @@ -3890,16 +4020,6 @@ Partial Class ucrCalculator Me.cmduniform.Text = "uniform" Me.cmduniform.UseVisualStyleBackColor = True ' - 'cmdProbRHelp - ' - Me.cmdProbRHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdProbRHelp.Location = New System.Drawing.Point(233, 189) - Me.cmdProbRHelp.Name = "cmdProbRHelp" - Me.cmdProbRHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdProbRHelp.TabIndex = 198 - Me.cmdProbRHelp.Text = "R Help" - Me.cmdProbRHelp.UseVisualStyleBackColor = True - ' 'cmdQnbin ' Me.cmdQnbin.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) @@ -4661,18 +4781,38 @@ Partial Class ucrCalculator ' 'cmdLogicalHelp ' - Me.cmdLogicalHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdLogicalHelp.Location = New System.Drawing.Point(173, 187) + Me.cmdLogicalHelp.AutoSize = True + Me.cmdLogicalHelp.ContextMenuStrip = Me.ContextMenuStripLogical + Me.cmdLogicalHelp.Location = New System.Drawing.Point(180, 187) Me.cmdLogicalHelp.Name = "cmdLogicalHelp" - Me.cmdLogicalHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdLogicalHelp.TabIndex = 208 + Me.cmdLogicalHelp.Size = New System.Drawing.Size(68, 23) + Me.cmdLogicalHelp.SplitMenuStrip = Me.ContextMenuStripLogical + Me.cmdLogicalHelp.TabIndex = 212 Me.cmdLogicalHelp.Text = "R Help" Me.cmdLogicalHelp.UseVisualStyleBackColor = True ' + 'ContextMenuStripLogical + ' + Me.ContextMenuStripLogical.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LogBaseToolStripMenuItem, Me.LogDplyrToolStripMenuItem}) + Me.ContextMenuStripLogical.Name = "ContextMenuStrip1" + Me.ContextMenuStripLogical.Size = New System.Drawing.Size(102, 48) + ' + 'LogBaseToolStripMenuItem + ' + Me.LogBaseToolStripMenuItem.Name = "LogBaseToolStripMenuItem" + Me.LogBaseToolStripMenuItem.Size = New System.Drawing.Size(101, 22) + Me.LogBaseToolStripMenuItem.Text = "base" + ' + 'LogDplyrToolStripMenuItem + ' + Me.LogDplyrToolStripMenuItem.Name = "LogDplyrToolStripMenuItem" + Me.LogDplyrToolStripMenuItem.Size = New System.Drawing.Size(101, 22) + Me.LogDplyrToolStripMenuItem.Text = "dplyr" + ' 'cmdFalse ' Me.cmdFalse.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdFalse.Location = New System.Drawing.Point(152, 42) + Me.cmdFalse.Location = New System.Drawing.Point(196, 42) Me.cmdFalse.Name = "cmdFalse" Me.cmdFalse.Size = New System.Drawing.Size(52, 30) Me.cmdFalse.TabIndex = 207 @@ -4682,7 +4822,7 @@ Partial Class ucrCalculator 'cmdTrue ' Me.cmdTrue.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdTrue.Location = New System.Drawing.Point(152, 13) + Me.cmdTrue.Location = New System.Drawing.Point(196, 13) Me.cmdTrue.Name = "cmdTrue" Me.cmdTrue.Size = New System.Drawing.Size(52, 30) Me.cmdTrue.TabIndex = 206 @@ -4703,10 +4843,10 @@ Partial Class ucrCalculator 'cmdIn ' Me.cmdIn.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdIn.Location = New System.Drawing.Point(78, 100) + Me.cmdIn.Location = New System.Drawing.Point(122, 100) Me.cmdIn.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdIn.Name = "cmdIn" - Me.cmdIn.Size = New System.Drawing.Size(45, 30) + Me.cmdIn.Size = New System.Drawing.Size(65, 30) Me.cmdIn.TabIndex = 204 Me.cmdIn.Text = "%in%" Me.cmdIn.UseVisualStyleBackColor = True @@ -4714,9 +4854,9 @@ Partial Class ucrCalculator 'cmdWhich ' Me.cmdWhich.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdWhich.Location = New System.Drawing.Point(196, 100) + Me.cmdWhich.Location = New System.Drawing.Point(186, 100) Me.cmdWhich.Name = "cmdWhich" - Me.cmdWhich.Size = New System.Drawing.Size(52, 30) + Me.cmdWhich.Size = New System.Drawing.Size(62, 30) Me.cmdWhich.TabIndex = 203 Me.cmdWhich.Text = "which" Me.cmdWhich.UseVisualStyleBackColor = True @@ -4724,10 +4864,10 @@ Partial Class ucrCalculator 'cmdNA ' Me.cmdNA.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdNA.Location = New System.Drawing.Point(159, 100) + Me.cmdNA.Location = New System.Drawing.Point(153, 42) Me.cmdNA.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdNA.Name = "cmdNA" - Me.cmdNA.Size = New System.Drawing.Size(38, 30) + Me.cmdNA.Size = New System.Drawing.Size(44, 30) Me.cmdNA.TabIndex = 202 Me.cmdNA.Text = "NA" Me.cmdNA.UseVisualStyleBackColor = True @@ -4875,10 +5015,10 @@ Partial Class ucrCalculator ' Me.cmdQuotes.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!) Me.cmdQuotes.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdQuotes.Location = New System.Drawing.Point(122, 100) + Me.cmdQuotes.Location = New System.Drawing.Point(153, 13) Me.cmdQuotes.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdQuotes.Name = "cmdQuotes" - Me.cmdQuotes.Size = New System.Drawing.Size(38, 30) + Me.cmdQuotes.Size = New System.Drawing.Size(44, 30) Me.cmdQuotes.TabIndex = 135 Me.cmdQuotes.Text = """ """ Me.cmdQuotes.UseVisualStyleBackColor = True @@ -4897,12 +5037,12 @@ Partial Class ucrCalculator 'cmdIntegerDivision ' Me.cmdIntegerDivision.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdIntegerDivision.Location = New System.Drawing.Point(41, 100) + Me.cmdIntegerDivision.Location = New System.Drawing.Point(65, 100) Me.cmdIntegerDivision.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdIntegerDivision.Name = "cmdIntegerDivision" - Me.cmdIntegerDivision.Size = New System.Drawing.Size(38, 30) + Me.cmdIntegerDivision.Size = New System.Drawing.Size(58, 30) Me.cmdIntegerDivision.TabIndex = 135 - Me.cmdIntegerDivision.Text = "%/%" + Me.cmdIntegerDivision.Text = "div(%/%)" Me.cmdIntegerDivision.UseVisualStyleBackColor = True ' 'cmdModulas @@ -4911,9 +5051,9 @@ Partial Class ucrCalculator Me.cmdModulas.Location = New System.Drawing.Point(4, 100) Me.cmdModulas.Margin = New System.Windows.Forms.Padding(2) Me.cmdModulas.Name = "cmdModulas" - Me.cmdModulas.Size = New System.Drawing.Size(38, 30) + Me.cmdModulas.Size = New System.Drawing.Size(62, 30) Me.cmdModulas.TabIndex = 134 - Me.cmdModulas.Text = "%%" + Me.cmdModulas.Text = "mod (%%)" Me.cmdModulas.UseVisualStyleBackColor = True ' 'cmdGreater @@ -5392,21 +5532,35 @@ Partial Class ucrCalculator Me.grpCircular.Margin = New System.Windows.Forms.Padding(2) Me.grpCircular.Name = "grpCircular" Me.grpCircular.Padding = New System.Windows.Forms.Padding(2) - Me.grpCircular.Size = New System.Drawing.Size(242, 168) + Me.grpCircular.Size = New System.Drawing.Size(248, 168) Me.grpCircular.TabIndex = 192 Me.grpCircular.TabStop = False Me.grpCircular.Text = "Circular" ' 'cmdCircularHelp ' - Me.cmdCircularHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdCircularHelp.Location = New System.Drawing.Point(165, 142) + Me.cmdCircularHelp.AutoSize = True + Me.cmdCircularHelp.ContextMenuStrip = Me.ContextMenuStripCircular + Me.cmdCircularHelp.Location = New System.Drawing.Point(174, 142) Me.cmdCircularHelp.Name = "cmdCircularHelp" - Me.cmdCircularHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdCircularHelp.TabIndex = 183 + Me.cmdCircularHelp.Size = New System.Drawing.Size(70, 23) + Me.cmdCircularHelp.SplitMenuStrip = Me.ContextMenuStripCircular + Me.cmdCircularHelp.TabIndex = 212 Me.cmdCircularHelp.Text = "R Help" Me.cmdCircularHelp.UseVisualStyleBackColor = True ' + 'ContextMenuStripCircular + ' + Me.ContextMenuStripCircular.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.CircularToolStripMenuItem}) + Me.ContextMenuStripCircular.Name = "ContextMenuStrip1" + Me.ContextMenuStripCircular.Size = New System.Drawing.Size(114, 26) + ' + 'CircularToolStripMenuItem + ' + Me.CircularToolStripMenuItem.Name = "CircularToolStripMenuItem" + Me.CircularToolStripMenuItem.Size = New System.Drawing.Size(113, 22) + Me.CircularToolStripMenuItem.Text = "circular" + ' 'cmdCircular ' Me.cmdCircular.ImeMode = System.Windows.Forms.ImeMode.NoControl @@ -5435,7 +5589,7 @@ Partial Class ucrCalculator Me.cmdCircMax.Location = New System.Drawing.Point(179, 111) Me.cmdCircMax.Margin = New System.Windows.Forms.Padding(2) Me.cmdCircMax.Name = "cmdCircMax" - Me.cmdCircMax.Size = New System.Drawing.Size(60, 32) + Me.cmdCircMax.Size = New System.Drawing.Size(65, 32) Me.cmdCircMax.TabIndex = 10 Me.cmdCircMax.Text = "max" Me.cmdCircMax.UseVisualStyleBackColor = True @@ -5468,7 +5622,7 @@ Partial Class ucrCalculator Me.cmdCircRho.Location = New System.Drawing.Point(179, 80) Me.cmdCircRho.Margin = New System.Windows.Forms.Padding(2) Me.cmdCircRho.Name = "cmdCircRho" - Me.cmdCircRho.Size = New System.Drawing.Size(60, 32) + Me.cmdCircRho.Size = New System.Drawing.Size(65, 32) Me.cmdCircRho.TabIndex = 14 Me.cmdCircRho.Text = "rho" Me.cmdCircRho.UseVisualStyleBackColor = True @@ -5523,7 +5677,7 @@ Partial Class ucrCalculator Me.cmdCircVar.Location = New System.Drawing.Point(179, 49) Me.cmdCircVar.Margin = New System.Windows.Forms.Padding(2) Me.cmdCircVar.Name = "cmdCircVar" - Me.cmdCircVar.Size = New System.Drawing.Size(60, 32) + Me.cmdCircVar.Size = New System.Drawing.Size(65, 32) Me.cmdCircVar.TabIndex = 5 Me.cmdCircVar.Text = "var" Me.cmdCircVar.UseVisualStyleBackColor = True @@ -5556,7 +5710,7 @@ Partial Class ucrCalculator Me.cmdMedianHL.Location = New System.Drawing.Point(179, 18) Me.cmdMedianHL.Margin = New System.Windows.Forms.Padding(2) Me.cmdMedianHL.Name = "cmdMedianHL" - Me.cmdMedianHL.Size = New System.Drawing.Size(60, 32) + Me.cmdMedianHL.Size = New System.Drawing.Size(65, 32) Me.cmdMedianHL.TabIndex = 2 Me.cmdMedianHL.Text = "medianHL" Me.cmdMedianHL.UseVisualStyleBackColor = True @@ -5833,16 +5987,6 @@ Partial Class ucrCalculator Me.cmdAny1.Text = ". any" Me.cmdAny1.UseVisualStyleBackColor = True ' - 'cmdStringRHelp - ' - Me.cmdStringRHelp.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdStringRHelp.Location = New System.Drawing.Point(656, 41) - Me.cmdStringRHelp.Name = "cmdStringRHelp" - Me.cmdStringRHelp.Size = New System.Drawing.Size(75, 23) - Me.cmdStringRHelp.TabIndex = 197 - Me.cmdStringRHelp.Text = "R Help" - Me.cmdStringRHelp.UseVisualStyleBackColor = True - ' 'grpComplex ' Me.grpComplex.Controls.Add(Me.cmdComplexRHelp) @@ -5885,18 +6029,6 @@ Partial Class ucrCalculator Me.cmdComplexRHelp.Text = "R Help" Me.cmdComplexRHelp.UseVisualStyleBackColor = True ' - 'ContextMenuStripComplex - ' - Me.ContextMenuStripComplex.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ComplexBaseToolStripMenuItem}) - Me.ContextMenuStripComplex.Name = "ContextMenuStrip1" - Me.ContextMenuStripComplex.Size = New System.Drawing.Size(181, 48) - ' - 'ComplexBaseToolStripMenuItem - ' - Me.ComplexBaseToolStripMenuItem.Name = "ComplexBaseToolStripMenuItem" - Me.ComplexBaseToolStripMenuItem.Size = New System.Drawing.Size(180, 22) - Me.ComplexBaseToolStripMenuItem.Text = "base" - ' 'cmdComplexTanH ' Me.cmdComplexTanH.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!) @@ -6193,11 +6325,97 @@ Partial Class ucrCalculator Me.ucrReceiverForCalculation.TabIndex = 120 Me.ucrReceiverForCalculation.ucrSelector = Nothing ' + 'cmdStringRHelp + ' + Me.cmdStringRHelp.AutoSize = True + Me.cmdStringRHelp.ContextMenuStrip = Me.ContextMenuStripTxtString + Me.cmdStringRHelp.Location = New System.Drawing.Point(647, 41) + Me.cmdStringRHelp.Name = "cmdStringRHelp" + Me.cmdStringRHelp.Size = New System.Drawing.Size(91, 23) + Me.cmdStringRHelp.SplitMenuStrip = Me.ContextMenuStripTxtString + Me.cmdStringRHelp.TabIndex = 210 + Me.cmdStringRHelp.Text = "R Help" + Me.cmdStringRHelp.UseVisualStyleBackColor = True + ' + 'ContextMenuStripTxtString + ' + Me.ContextMenuStripTxtString.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TxTStringrToolStripMenuItem, Me.TxTBaseToolStripMenuItem}) + Me.ContextMenuStripTxtString.Name = "ContextMenuStrip1" + Me.ContextMenuStripTxtString.Size = New System.Drawing.Size(110, 48) + ' + 'TxTStringrToolStripMenuItem + ' + Me.TxTStringrToolStripMenuItem.Name = "TxTStringrToolStripMenuItem" + Me.TxTStringrToolStripMenuItem.Size = New System.Drawing.Size(109, 22) + Me.TxTStringrToolStripMenuItem.Text = "Stringr" + ' + 'TxTBaseToolStripMenuItem + ' + Me.TxTBaseToolStripMenuItem.Name = "TxTBaseToolStripMenuItem" + Me.TxTBaseToolStripMenuItem.Size = New System.Drawing.Size(109, 22) + Me.TxTBaseToolStripMenuItem.Text = "base" + ' + 'cmdWakefieldHelp + ' + Me.cmdWakefieldHelp.AutoSize = True + Me.cmdWakefieldHelp.ContextMenuStrip = Me.ContextMenuStripWakefield + Me.cmdWakefieldHelp.Location = New System.Drawing.Point(774, 41) + Me.cmdWakefieldHelp.Name = "cmdWakefieldHelp" + Me.cmdWakefieldHelp.Size = New System.Drawing.Size(91, 23) + Me.cmdWakefieldHelp.SplitMenuStrip = Me.ContextMenuStripWakefield + Me.cmdWakefieldHelp.TabIndex = 211 + Me.cmdWakefieldHelp.Text = "R Help" + Me.cmdWakefieldHelp.UseVisualStyleBackColor = True + ' + 'ContextMenuStripWakefield + ' + Me.ContextMenuStripWakefield.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.WakefieldToolStripMenuItem}) + Me.ContextMenuStripWakefield.Name = "ContextMenuStrip1" + Me.ContextMenuStripWakefield.Size = New System.Drawing.Size(125, 26) + ' + 'WakefieldToolStripMenuItem + ' + Me.WakefieldToolStripMenuItem.Name = "WakefieldToolStripMenuItem" + Me.WakefieldToolStripMenuItem.Size = New System.Drawing.Size(124, 22) + Me.WakefieldToolStripMenuItem.Text = "wakefield" + ' + 'ContextMenuStripList + ' + Me.ContextMenuStripList.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ListBaseToolStripMenuItem, Me.ListStatsToolStripMenuItem, Me.ListStatipToolStripMenuItem}) + Me.ContextMenuStripList.Name = "ContextMenuStrip1" + Me.ContextMenuStripList.Size = New System.Drawing.Size(104, 70) + ' + 'ListBaseToolStripMenuItem + ' + Me.ListBaseToolStripMenuItem.Name = "ListBaseToolStripMenuItem" + Me.ListBaseToolStripMenuItem.Size = New System.Drawing.Size(103, 22) + Me.ListBaseToolStripMenuItem.Text = "base" + ' + 'ListStatsToolStripMenuItem + ' + Me.ListStatsToolStripMenuItem.Name = "ListStatsToolStripMenuItem" + Me.ListStatsToolStripMenuItem.Size = New System.Drawing.Size(103, 22) + Me.ListStatsToolStripMenuItem.Text = "stats" + ' + 'ListStatipToolStripMenuItem + ' + Me.ListStatipToolStripMenuItem.Name = "ListStatipToolStripMenuItem" + Me.ListStatipToolStripMenuItem.Size = New System.Drawing.Size(103, 22) + Me.ListStatipToolStripMenuItem.Text = "statip" + ' 'ucrCalculator ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True + Me.Controls.Add(Me.grpDates) + Me.Controls.Add(Me.grpLogical) + Me.Controls.Add(Me.grpHydroGOF) + Me.Controls.Add(Me.grpProbabilty) + Me.Controls.Add(Me.grpFactor) + Me.Controls.Add(Me.grpCircular) + Me.Controls.Add(Me.grpMaths) + Me.Controls.Add(Me.grpInteger) Me.Controls.Add(Me.cmdWakefieldHelp) Me.Controls.Add(Me.cmdStringRHelp) Me.Controls.Add(Me.ucrSaveResultInto) @@ -6209,48 +6427,57 @@ Partial Class ucrCalculator Me.Controls.Add(Me.ucrSelectorForCalculations) Me.Controls.Add(Me.ucrReceiverForCalculation) Me.Controls.Add(Me.lblExpression) + Me.Controls.Add(Me.grpTestString) + Me.Controls.Add(Me.grpModifier) Me.Controls.Add(Me.grpComplex) Me.Controls.Add(Me.grpSummary) - Me.Controls.Add(Me.grpInteger) - Me.Controls.Add(Me.grpTransform) - Me.Controls.Add(Me.grpDates) Me.Controls.Add(Me.grpWakefield) - Me.Controls.Add(Me.grpLogical) - Me.Controls.Add(Me.grpHydroGOF) - Me.Controls.Add(Me.grpMaths) - Me.Controls.Add(Me.grpFactor) - Me.Controls.Add(Me.grpCircular) - Me.Controls.Add(Me.grpTestString) - Me.Controls.Add(Me.grpProbabilty) - Me.Controls.Add(Me.grpModifier) + Me.Controls.Add(Me.grpTransform) Me.Name = "ucrCalculator" Me.Size = New System.Drawing.Size(899, 457) Me.grpBasic.ResumeLayout(False) Me.grpDates.ResumeLayout(False) + Me.grpDates.PerformLayout() + Me.ContextMenuStripDate.ResumeLayout(False) + Me.ContextMenuStripComplex.ResumeLayout(False) Me.grpInteger.ResumeLayout(False) Me.grpInteger.PerformLayout() Me.ContextMenuStripInteger.ResumeLayout(False) Me.grpFactor.ResumeLayout(False) + Me.grpFactor.PerformLayout() + Me.ContextMenuStripFactor.ResumeLayout(False) Me.grpHydroGOF.ResumeLayout(False) + Me.grpHydroGOF.PerformLayout() + Me.ContextMenuStripHydroGOF.ResumeLayout(False) Me.grpWakefield.ResumeLayout(False) Me.grpMaths.ResumeLayout(False) + Me.grpMaths.PerformLayout() + Me.ContextMenuStripMaths.ResumeLayout(False) Me.grpSummary.ResumeLayout(False) Me.grpSummary.PerformLayout() Me.ContextMenuStripSummary.ResumeLayout(False) Me.grpFrequencies.ResumeLayout(False) Me.grpProbabilty.ResumeLayout(False) + Me.grpProbabilty.PerformLayout() + Me.ContextMenuStripProbability.ResumeLayout(False) Me.grpRandom.ResumeLayout(False) Me.grpTransform.ResumeLayout(False) Me.grpTransform.PerformLayout() Me.ContextMenuStripTransform.ResumeLayout(False) Me.grpLogical.ResumeLayout(False) + Me.grpLogical.PerformLayout() + Me.ContextMenuStripLogical.ResumeLayout(False) Me.grpTestString.ResumeLayout(False) Me.grpCircular.ResumeLayout(False) + Me.grpCircular.PerformLayout() + Me.ContextMenuStripCircular.ResumeLayout(False) Me.grpModifier.ResumeLayout(False) Me.grpSymbols.ResumeLayout(False) Me.grpComplex.ResumeLayout(False) Me.grpComplex.PerformLayout() - Me.ContextMenuStripComplex.ResumeLayout(False) + Me.ContextMenuStripTxtString.ResumeLayout(False) + Me.ContextMenuStripWakefield.ResumeLayout(False) + Me.ContextMenuStripList.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -6259,7 +6486,6 @@ Partial Class ucrCalculator Friend WithEvents ucrReceiverForCalculation As ucrReceiverExpression Friend WithEvents lblExpression As Label Friend WithEvents ucrSelectorForCalculations As ucrSelectorByDataFrameAddRemove - Friend WithEvents cmdRHelp As Button Friend WithEvents chkShowParameters As CheckBox Friend WithEvents ucrInputCalOptions As ucrInputComboBox Friend WithEvents grpBasic As GroupBox @@ -6613,14 +6839,6 @@ Partial Class ucrCalculator Friend WithEvents cmdTrunck As Button Friend WithEvents cmdEnds As Button Friend WithEvents cmdSortF As Button - Friend WithEvents cmdHydroHelp As Button - Friend WithEvents cmdTransformHelp As Button - Friend WithEvents cmdCircularHelp As Button - Friend WithEvents cmdWakefieldHelp As Button - Friend WithEvents cmdMathsHelp As Button - Friend WithEvents cmdLogicalHelp As Button - Friend WithEvents cmdStringRHelp As Button - Friend WithEvents cmdProbRHelp As Button Friend WithEvents grpInteger As GroupBox Friend WithEvents cmdFactorial As Button Friend WithEvents cmdIsPrime As Button @@ -6740,4 +6958,39 @@ Partial Class ucrCalculator Friend WithEvents cmdComplexRHelp As ucrSplitButton Friend WithEvents ContextMenuStripComplex As ContextMenuStrip Friend WithEvents ComplexBaseToolStripMenuItem As ToolStripMenuItem + Friend WithEvents cmdRHelp As ucrSplitButton + Friend WithEvents cmdTransformHelp As ucrSplitButton + Friend WithEvents cmdHydroHelp As ucrSplitButton + Friend WithEvents cmdMathsHelp As ucrSplitButton + Friend WithEvents cmdProbRHelp As ucrSplitButton + Friend WithEvents cmdLogicalHelp As ucrSplitButton + Friend WithEvents cmdCircularHelp As ucrSplitButton + Friend WithEvents cmdStringRHelp As ucrSplitButton + Friend WithEvents cmdWakefieldHelp As ucrSplitButton + Friend WithEvents ContextMenuStripMaths As ContextMenuStrip + Friend WithEvents MathsStatsStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripLogical As ContextMenuStrip + Friend WithEvents LogBaseToolStripMenuItem As ToolStripMenuItem + Friend WithEvents LogDplyrToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripTxtString As ContextMenuStrip + Friend WithEvents TxTStringrToolStripMenuItem As ToolStripMenuItem + Friend WithEvents TxTBaseToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripFactor As ContextMenuStrip + Friend WithEvents FactorForcatsToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripProbability As ContextMenuStrip + Friend WithEvents ProbStatsToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ProbBaseToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripDate As ContextMenuStrip + Friend WithEvents DateLubridateToolStripMenuItem As ToolStripMenuItem + Friend WithEvents DateHmsToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripHydroGOF As ContextMenuStrip + Friend WithEvents HydroGOFToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripCircular As ContextMenuStrip + Friend WithEvents CircularToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripWakefield As ContextMenuStrip + Friend WithEvents WakefieldToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ContextMenuStripList As ContextMenuStrip + Friend WithEvents ListBaseToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ListStatsToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ListStatipToolStripMenuItem As ToolStripMenuItem End Class diff --git a/instat/ucrCalculator.resx b/instat/ucrCalculator.resx index b19488cbe6a..ffe4d53c9ff 100644 --- a/instat/ucrCalculator.resx +++ b/instat/ucrCalculator.resx @@ -117,22 +117,52 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 103 + + + 721, 24 + 123, 24 + + 551, 64 + + + 565, 103 + + + 17, 63 + 519, 24 + + 722, 64 + 313, 24 + + 182, 62 + 17, 17 - - 721, 24 + + 381, 104 + + + 352, 64 + + + 193, 103 + + + 759, 103 - 78 + 175 \ No newline at end of file diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index e2089a0690f..69030c59c2e 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -1504,7 +1504,7 @@ Public Class ucrCalculator iCallType:=2, bSeparateThread:=False, bUpdateGrids:=False) End Sub - Private Sub cmdHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, cmdHydroHelp.Click, cmdCircularHelp.Click, cmdWakefieldHelp.Click, cmdMathsHelp.Click, cmdLogicalHelp.Click, cmdProbRHelp.Click, cmdStringRHelp.Click + Private Sub cmdHelp_Click(sender As Object, e As EventArgs) OpenHelpPage() End Sub @@ -4611,6 +4611,182 @@ Public Class ucrCalculator OpenHelpPage() End Sub + Private Sub cmdWakefieldHelp_Click(sender As Object, e As EventArgs) Handles cmdWakefieldHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Wakefield" Then + strPackageName = "wakefield" + End If + OpenHelpPage() + End Sub + + Private Sub WakefieldToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles WakefieldToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Wakefield" Then + strPackageName = "wakefield" + End If + OpenHelpPage() + End Sub + + Private Sub cmdCircularHelp_Click(sender As Object, e As EventArgs) Handles cmdCircularHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Circular" Then + strPackageName = "circular" + End If + OpenHelpPage() + End Sub + + Private Sub CircularToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CircularToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Circular" Then + strPackageName = "circular" + End If + OpenHelpPage() + End Sub + + Private Sub cmdHydroHelp_Click(sender As Object, e As EventArgs) Handles cmdHydroHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "hydroGOF" Then + strPackageName = "hydroGOF" + End If + OpenHelpPage() + End Sub + + Private Sub HydroGOFToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HydroGOFToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "hydroGOF" Then + strPackageName = "hydroGOF" + End If + OpenHelpPage() + End Sub + + Private Sub cmdMathsHelp_Click(sender As Object, e As EventArgs) Handles cmdMathsHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Maths" Then + strPackageName = "stats" + End If + OpenHelpPage() + End Sub + + Private Sub MathsStatsStripMenuItem_Click(sender As Object, e As EventArgs) Handles MathsStatsStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Maths" Then + strPackageName = "stats" + End If + OpenHelpPage() + End Sub + + Private Sub cmdTransformHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Factor" Then + strPackageName = "forcats" + End If + OpenHelpPage() + End Sub + + Private Sub FactorForcatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FactorForcatsToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Factor" Then + strPackageName = "forcats" + End If + OpenHelpPage() + End Sub + + Private Sub cmdLogicalHelp_Click(sender As Object, e As EventArgs) Handles cmdLogicalHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Logical and Symbols" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + + Private Sub LogBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogBaseToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Logical and Symbols" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + + Private Sub LogDplyrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogDplyrToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Logical and Symbols" Then + strPackageName = "dplyr" + End If + OpenHelpPage() + End Sub + + Private Sub cmdStringRHelp_Click(sender As Object, e As EventArgs) Handles cmdStringRHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then + strPackageName = "stringr" + End If + OpenHelpPage() + End Sub + + Private Sub TxTStringrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTStringrToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then + strPackageName = "stringr" + End If + OpenHelpPage() + End Sub + + Private Sub TxTBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTBaseToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + + Private Sub cmdProbRHelp_Click(sender As Object, e As EventArgs) Handles cmdProbRHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Probability" Then + strPackageName = "stats" + End If + OpenHelpPage() + End Sub + + Private Sub ProbStatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbStatsToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Probability" Then + strPackageName = "stats" + End If + OpenHelpPage() + End Sub + + Private Sub ProbBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbBaseToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Probability" Then + strPackageName = "base" + End If + OpenHelpPage() + End Sub + + Private Sub cmdRHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Dates/Times" Then + strPackageName = "lubridate" + End If + OpenHelpPage() + End Sub + + Private Sub DateLubridateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateLubridateToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Dates/Times" Then + strPackageName = "lubridate" + End If + OpenHelpPage() + End Sub + + Private Sub DateHmsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateHmsToolStripMenuItem.Click + CalculationsOptions() + If ucrInputCalOptions.GetText = "Dates/Times" Then + strPackageName = "hms" + End If + OpenHelpPage() + End Sub + Private Sub cmduniform_Click(sender As Object, e As EventArgs) Handles cmduniform.Click Dim clsUniformFunction As New RFunction From 67e2c94bbabc3c5d3f44284aed37368871ee6c10 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Sat, 24 Dec 2022 01:27:32 +0100 Subject: [PATCH 82/88] Layout Changes to Logical keyboard --- instat/ucrCalculator.Designer.vb | 86 ++++++++++++++++---------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/instat/ucrCalculator.Designer.vb b/instat/ucrCalculator.Designer.vb index a2b21cc49d8..7f0d33ddf6b 100644 --- a/instat/ucrCalculator.Designer.vb +++ b/instat/ucrCalculator.Designer.vb @@ -4774,7 +4774,7 @@ Partial Class ucrCalculator Me.grpLogical.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.grpLogical.Name = "grpLogical" Me.grpLogical.Padding = New System.Windows.Forms.Padding(2, 3, 2, 3) - Me.grpLogical.Size = New System.Drawing.Size(253, 213) + Me.grpLogical.Size = New System.Drawing.Size(258, 213) Me.grpLogical.TabIndex = 183 Me.grpLogical.TabStop = False Me.grpLogical.Text = "Logical and Symbols" @@ -4783,7 +4783,7 @@ Partial Class ucrCalculator ' Me.cmdLogicalHelp.AutoSize = True Me.cmdLogicalHelp.ContextMenuStrip = Me.ContextMenuStripLogical - Me.cmdLogicalHelp.Location = New System.Drawing.Point(180, 187) + Me.cmdLogicalHelp.Location = New System.Drawing.Point(186, 187) Me.cmdLogicalHelp.Name = "cmdLogicalHelp" Me.cmdLogicalHelp.Size = New System.Drawing.Size(68, 23) Me.cmdLogicalHelp.SplitMenuStrip = Me.ContextMenuStripLogical @@ -4812,7 +4812,7 @@ Partial Class ucrCalculator 'cmdFalse ' Me.cmdFalse.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdFalse.Location = New System.Drawing.Point(196, 42) + Me.cmdFalse.Location = New System.Drawing.Point(202, 42) Me.cmdFalse.Name = "cmdFalse" Me.cmdFalse.Size = New System.Drawing.Size(52, 30) Me.cmdFalse.TabIndex = 207 @@ -4822,7 +4822,7 @@ Partial Class ucrCalculator 'cmdTrue ' Me.cmdTrue.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdTrue.Location = New System.Drawing.Point(196, 13) + Me.cmdTrue.Location = New System.Drawing.Point(202, 13) Me.cmdTrue.Name = "cmdTrue" Me.cmdTrue.Size = New System.Drawing.Size(52, 30) Me.cmdTrue.TabIndex = 206 @@ -4832,10 +4832,10 @@ Partial Class ucrCalculator 'cmdDoubleSqrBrackets ' Me.cmdDoubleSqrBrackets.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdDoubleSqrBrackets.Location = New System.Drawing.Point(118, 71) + Me.cmdDoubleSqrBrackets.Location = New System.Drawing.Point(128, 71) Me.cmdDoubleSqrBrackets.Margin = New System.Windows.Forms.Padding(2) Me.cmdDoubleSqrBrackets.Name = "cmdDoubleSqrBrackets" - Me.cmdDoubleSqrBrackets.Size = New System.Drawing.Size(50, 30) + Me.cmdDoubleSqrBrackets.Size = New System.Drawing.Size(36, 30) Me.cmdDoubleSqrBrackets.TabIndex = 205 Me.cmdDoubleSqrBrackets.Text = "[[ ]]" Me.cmdDoubleSqrBrackets.UseVisualStyleBackColor = True @@ -4843,7 +4843,7 @@ Partial Class ucrCalculator 'cmdIn ' Me.cmdIn.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdIn.Location = New System.Drawing.Point(122, 100) + Me.cmdIn.Location = New System.Drawing.Point(128, 100) Me.cmdIn.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdIn.Name = "cmdIn" Me.cmdIn.Size = New System.Drawing.Size(65, 30) @@ -4854,7 +4854,7 @@ Partial Class ucrCalculator 'cmdWhich ' Me.cmdWhich.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdWhich.Location = New System.Drawing.Point(186, 100) + Me.cmdWhich.Location = New System.Drawing.Point(192, 100) Me.cmdWhich.Name = "cmdWhich" Me.cmdWhich.Size = New System.Drawing.Size(62, 30) Me.cmdWhich.TabIndex = 203 @@ -4864,10 +4864,10 @@ Partial Class ucrCalculator 'cmdNA ' Me.cmdNA.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdNA.Location = New System.Drawing.Point(153, 42) + Me.cmdNA.Location = New System.Drawing.Point(163, 42) Me.cmdNA.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdNA.Name = "cmdNA" - Me.cmdNA.Size = New System.Drawing.Size(44, 30) + Me.cmdNA.Size = New System.Drawing.Size(40, 30) Me.cmdNA.TabIndex = 202 Me.cmdNA.Text = "NA" Me.cmdNA.UseVisualStyleBackColor = True @@ -4875,7 +4875,7 @@ Partial Class ucrCalculator 'cmdNear ' Me.cmdNear.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdNear.Location = New System.Drawing.Point(186, 158) + Me.cmdNear.Location = New System.Drawing.Point(192, 158) Me.cmdNear.Name = "cmdNear" Me.cmdNear.Size = New System.Drawing.Size(62, 30) Me.cmdNear.TabIndex = 201 @@ -4885,7 +4885,7 @@ Partial Class ucrCalculator 'cmdBetween ' Me.cmdBetween.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdBetween.Location = New System.Drawing.Point(186, 129) + Me.cmdBetween.Location = New System.Drawing.Point(192, 129) Me.cmdBetween.Name = "cmdBetween" Me.cmdBetween.Size = New System.Drawing.Size(62, 30) Me.cmdBetween.TabIndex = 200 @@ -4907,7 +4907,7 @@ Partial Class ucrCalculator Me.cmdNotIsNa.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.cmdNotIsNa.Location = New System.Drawing.Point(65, 158) Me.cmdNotIsNa.Name = "cmdNotIsNa" - Me.cmdNotIsNa.Size = New System.Drawing.Size(58, 30) + Me.cmdNotIsNa.Size = New System.Drawing.Size(63, 30) Me.cmdNotIsNa.TabIndex = 194 Me.cmdNotIsNa.Text = "!is.na" Me.cmdNotIsNa.UseVisualStyleBackColor = True @@ -4915,7 +4915,7 @@ Partial Class ucrCalculator 'cmdDuplicate ' Me.cmdDuplicate.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdDuplicate.Location = New System.Drawing.Point(122, 158) + Me.cmdDuplicate.Location = New System.Drawing.Point(128, 158) Me.cmdDuplicate.Name = "cmdDuplicate" Me.cmdDuplicate.Size = New System.Drawing.Size(65, 30) Me.cmdDuplicate.TabIndex = 193 @@ -4937,7 +4937,7 @@ Partial Class ucrCalculator Me.cmdmatch.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.cmdmatch.Location = New System.Drawing.Point(65, 129) Me.cmdmatch.Name = "cmdmatch" - Me.cmdmatch.Size = New System.Drawing.Size(58, 30) + Me.cmdmatch.Size = New System.Drawing.Size(63, 30) Me.cmdmatch.TabIndex = 191 Me.cmdmatch.Text = "match" Me.cmdmatch.UseVisualStyleBackColor = True @@ -4945,7 +4945,7 @@ Partial Class ucrCalculator 'cmdwhen ' Me.cmdwhen.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdwhen.Location = New System.Drawing.Point(122, 129) + Me.cmdwhen.Location = New System.Drawing.Point(128, 129) Me.cmdwhen.Name = "cmdwhen" Me.cmdwhen.Size = New System.Drawing.Size(65, 30) Me.cmdwhen.TabIndex = 190 @@ -4955,7 +4955,7 @@ Partial Class ucrCalculator 'cmdOpeningBracket ' Me.cmdOpeningBracket.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdOpeningBracket.Location = New System.Drawing.Point(167, 71) + Me.cmdOpeningBracket.Location = New System.Drawing.Point(163, 71) Me.cmdOpeningBracket.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdOpeningBracket.Name = "cmdOpeningBracket" Me.cmdOpeningBracket.Size = New System.Drawing.Size(40, 30) @@ -4967,10 +4967,10 @@ Partial Class ucrCalculator ' Me.cmdColon.Font = New System.Drawing.Font("Microsoft Sans Serif", 15.75!) Me.cmdColon.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdColon.Location = New System.Drawing.Point(41, 71) + Me.cmdColon.Location = New System.Drawing.Point(43, 71) Me.cmdColon.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdColon.Name = "cmdColon" - Me.cmdColon.Size = New System.Drawing.Size(38, 30) + Me.cmdColon.Size = New System.Drawing.Size(40, 30) Me.cmdColon.TabIndex = 139 Me.cmdColon.Text = ":" Me.cmdColon.UseVisualStyleBackColor = True @@ -4978,10 +4978,10 @@ Partial Class ucrCalculator 'cmdGreaterOrEqualsTo ' Me.cmdGreaterOrEqualsTo.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdGreaterOrEqualsTo.Location = New System.Drawing.Point(115, 13) + Me.cmdGreaterOrEqualsTo.Location = New System.Drawing.Point(128, 13) Me.cmdGreaterOrEqualsTo.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdGreaterOrEqualsTo.Name = "cmdGreaterOrEqualsTo" - Me.cmdGreaterOrEqualsTo.Size = New System.Drawing.Size(38, 30) + Me.cmdGreaterOrEqualsTo.Size = New System.Drawing.Size(36, 30) Me.cmdGreaterOrEqualsTo.TabIndex = 138 Me.cmdGreaterOrEqualsTo.Text = ">=" Me.cmdGreaterOrEqualsTo.UseVisualStyleBackColor = True @@ -4989,10 +4989,10 @@ Partial Class ucrCalculator 'cmdClossingBracket ' Me.cmdClossingBracket.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdClossingBracket.Location = New System.Drawing.Point(206, 71) + Me.cmdClossingBracket.Location = New System.Drawing.Point(202, 71) Me.cmdClossingBracket.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdClossingBracket.Name = "cmdClossingBracket" - Me.cmdClossingBracket.Size = New System.Drawing.Size(42, 30) + Me.cmdClossingBracket.Size = New System.Drawing.Size(52, 30) Me.cmdClossingBracket.TabIndex = 137 Me.cmdClossingBracket.Tag = "" Me.cmdClossingBracket.Text = ")" @@ -5002,10 +5002,10 @@ Partial Class ucrCalculator ' Me.cmdAnd.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!) Me.cmdAnd.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdAnd.Location = New System.Drawing.Point(115, 42) + Me.cmdAnd.Location = New System.Drawing.Point(128, 42) Me.cmdAnd.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdAnd.Name = "cmdAnd" - Me.cmdAnd.Size = New System.Drawing.Size(38, 30) + Me.cmdAnd.Size = New System.Drawing.Size(36, 30) Me.cmdAnd.TabIndex = 137 Me.cmdAnd.Tag = "And" Me.cmdAnd.Text = "&&" @@ -5015,10 +5015,10 @@ Partial Class ucrCalculator ' Me.cmdQuotes.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!) Me.cmdQuotes.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdQuotes.Location = New System.Drawing.Point(153, 13) + Me.cmdQuotes.Location = New System.Drawing.Point(163, 13) Me.cmdQuotes.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdQuotes.Name = "cmdQuotes" - Me.cmdQuotes.Size = New System.Drawing.Size(44, 30) + Me.cmdQuotes.Size = New System.Drawing.Size(40, 30) Me.cmdQuotes.TabIndex = 135 Me.cmdQuotes.Text = """ """ Me.cmdQuotes.UseVisualStyleBackColor = True @@ -5026,10 +5026,10 @@ Partial Class ucrCalculator 'cmdSquareBrackets ' Me.cmdSquareBrackets.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdSquareBrackets.Location = New System.Drawing.Point(78, 71) + Me.cmdSquareBrackets.Location = New System.Drawing.Point(82, 71) Me.cmdSquareBrackets.Margin = New System.Windows.Forms.Padding(2) Me.cmdSquareBrackets.Name = "cmdSquareBrackets" - Me.cmdSquareBrackets.Size = New System.Drawing.Size(42, 30) + Me.cmdSquareBrackets.Size = New System.Drawing.Size(46, 30) Me.cmdSquareBrackets.TabIndex = 134 Me.cmdSquareBrackets.Text = "[ ]" Me.cmdSquareBrackets.UseVisualStyleBackColor = True @@ -5040,9 +5040,9 @@ Partial Class ucrCalculator Me.cmdIntegerDivision.Location = New System.Drawing.Point(65, 100) Me.cmdIntegerDivision.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdIntegerDivision.Name = "cmdIntegerDivision" - Me.cmdIntegerDivision.Size = New System.Drawing.Size(58, 30) + Me.cmdIntegerDivision.Size = New System.Drawing.Size(63, 30) Me.cmdIntegerDivision.TabIndex = 135 - Me.cmdIntegerDivision.Text = "div(%/%)" + Me.cmdIntegerDivision.Text = "div (%/%)" Me.cmdIntegerDivision.UseVisualStyleBackColor = True ' 'cmdModulas @@ -5059,10 +5059,10 @@ Partial Class ucrCalculator 'cmdGreater ' Me.cmdGreater.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdGreater.Location = New System.Drawing.Point(78, 13) + Me.cmdGreater.Location = New System.Drawing.Point(82, 13) Me.cmdGreater.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdGreater.Name = "cmdGreater" - Me.cmdGreater.Size = New System.Drawing.Size(38, 30) + Me.cmdGreater.Size = New System.Drawing.Size(46, 30) Me.cmdGreater.TabIndex = 133 Me.cmdGreater.Text = ">" Me.cmdGreater.UseVisualStyleBackColor = True @@ -5070,10 +5070,10 @@ Partial Class ucrCalculator 'cmdLesserOrEqualsTo ' Me.cmdLesserOrEqualsTo.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdLesserOrEqualsTo.Location = New System.Drawing.Point(41, 13) + Me.cmdLesserOrEqualsTo.Location = New System.Drawing.Point(43, 13) Me.cmdLesserOrEqualsTo.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdLesserOrEqualsTo.Name = "cmdLesserOrEqualsTo" - Me.cmdLesserOrEqualsTo.Size = New System.Drawing.Size(38, 30) + Me.cmdLesserOrEqualsTo.Size = New System.Drawing.Size(40, 30) Me.cmdLesserOrEqualsTo.TabIndex = 132 Me.cmdLesserOrEqualsTo.Text = "<=" Me.cmdLesserOrEqualsTo.UseVisualStyleBackColor = True @@ -5084,7 +5084,7 @@ Partial Class ucrCalculator Me.cmdLesser.Location = New System.Drawing.Point(4, 13) Me.cmdLesser.Margin = New System.Windows.Forms.Padding(2) Me.cmdLesser.Name = "cmdLesser" - Me.cmdLesser.Size = New System.Drawing.Size(38, 30) + Me.cmdLesser.Size = New System.Drawing.Size(39, 30) Me.cmdLesser.TabIndex = 131 Me.cmdLesser.Text = "<" Me.cmdLesser.UseVisualStyleBackColor = True @@ -5092,10 +5092,10 @@ Partial Class ucrCalculator 'cmdOr ' Me.cmdOr.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdOr.Location = New System.Drawing.Point(78, 42) + Me.cmdOr.Location = New System.Drawing.Point(82, 42) Me.cmdOr.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdOr.Name = "cmdOr" - Me.cmdOr.Size = New System.Drawing.Size(38, 30) + Me.cmdOr.Size = New System.Drawing.Size(46, 30) Me.cmdOr.TabIndex = 130 Me.cmdOr.Text = "|" Me.cmdOr.UseVisualStyleBackColor = True @@ -5107,7 +5107,7 @@ Partial Class ucrCalculator Me.cmdNot.Location = New System.Drawing.Point(4, 71) Me.cmdNot.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdNot.Name = "cmdNot" - Me.cmdNot.Size = New System.Drawing.Size(38, 30) + Me.cmdNot.Size = New System.Drawing.Size(39, 30) Me.cmdNot.TabIndex = 129 Me.cmdNot.Text = "!" Me.cmdNot.UseVisualStyleBackColor = True @@ -5115,10 +5115,10 @@ Partial Class ucrCalculator 'cmdNotEqualsTo ' Me.cmdNotEqualsTo.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.cmdNotEqualsTo.Location = New System.Drawing.Point(41, 42) + Me.cmdNotEqualsTo.Location = New System.Drawing.Point(43, 42) Me.cmdNotEqualsTo.Margin = New System.Windows.Forms.Padding(2, 3, 2, 3) Me.cmdNotEqualsTo.Name = "cmdNotEqualsTo" - Me.cmdNotEqualsTo.Size = New System.Drawing.Size(38, 30) + Me.cmdNotEqualsTo.Size = New System.Drawing.Size(40, 30) Me.cmdNotEqualsTo.TabIndex = 128 Me.cmdNotEqualsTo.Text = "!=" Me.cmdNotEqualsTo.UseVisualStyleBackColor = True @@ -5129,7 +5129,7 @@ Partial Class ucrCalculator Me.cmdEquivalent.Location = New System.Drawing.Point(4, 42) Me.cmdEquivalent.Margin = New System.Windows.Forms.Padding(2) Me.cmdEquivalent.Name = "cmdEquivalent" - Me.cmdEquivalent.Size = New System.Drawing.Size(38, 30) + Me.cmdEquivalent.Size = New System.Drawing.Size(39, 30) Me.cmdEquivalent.TabIndex = 127 Me.cmdEquivalent.Text = "==" Me.cmdEquivalent.UseVisualStyleBackColor = True @@ -6408,8 +6408,8 @@ Partial Class ucrCalculator Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True - Me.Controls.Add(Me.grpDates) Me.Controls.Add(Me.grpLogical) + Me.Controls.Add(Me.grpDates) Me.Controls.Add(Me.grpHydroGOF) Me.Controls.Add(Me.grpProbabilty) Me.Controls.Add(Me.grpFactor) From b68a5eee45faa1267bf20219e1c9c8ccce31bcc5 Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Thu, 29 Dec 2022 11:47:43 +0100 Subject: [PATCH 83/88] Code Changes --- instat/ucrCalculator.vb | 78 +++++++---------------------------------- 1 file changed, 13 insertions(+), 65 deletions(-) diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index 69030c59c2e..8641c5c178f 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -4328,11 +4328,7 @@ Public Class ucrCalculator End Sub Private Sub GmpToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GmpToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Integer" Then - strPackageName = "gmp" - End If - OpenHelpPage() + cmdIntegerRHelp.PerformClick() End Sub Private Sub ZseqToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZseqToolStripMenuItem.Click @@ -4384,11 +4380,7 @@ Public Class ucrCalculator End Sub Private Sub BaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BaseToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Transform" Then - strPackageName = "base" - End If - OpenHelpPage() + cmdTransformRHelp.PerformClick() End Sub Private Sub DplyrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DplyrToolStripMenuItem.Click @@ -4540,11 +4532,7 @@ Public Class ucrCalculator End Sub Private Sub BaseToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles BaseToolStripMenuItem1.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Summary" Then - strPackageName = "base" - End If - OpenHelpPage() + cmdSummaryRHelp.PerformClick() End Sub Private Sub StatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StatsToolStripMenuItem.Click @@ -4604,11 +4592,7 @@ Public Class ucrCalculator End Sub Private Sub ComplexBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ComplexBaseToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Complex" Then - strPackageName = "base" - End If - OpenHelpPage() + cmdComplexRHelp.PerformClick() End Sub Private Sub cmdWakefieldHelp_Click(sender As Object, e As EventArgs) Handles cmdWakefieldHelp.Click @@ -4620,11 +4604,7 @@ Public Class ucrCalculator End Sub Private Sub WakefieldToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles WakefieldToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Wakefield" Then - strPackageName = "wakefield" - End If - OpenHelpPage() + cmdWakefieldHelp.PerformClick() End Sub Private Sub cmdCircularHelp_Click(sender As Object, e As EventArgs) Handles cmdCircularHelp.Click @@ -4636,11 +4616,7 @@ Public Class ucrCalculator End Sub Private Sub CircularToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CircularToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Circular" Then - strPackageName = "circular" - End If - OpenHelpPage() + cmdCircularHelp.PerformClick() End Sub Private Sub cmdHydroHelp_Click(sender As Object, e As EventArgs) Handles cmdHydroHelp.Click @@ -4652,11 +4628,7 @@ Public Class ucrCalculator End Sub Private Sub HydroGOFToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HydroGOFToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "hydroGOF" Then - strPackageName = "hydroGOF" - End If - OpenHelpPage() + cmdHydroHelp.PerformClick() End Sub Private Sub cmdMathsHelp_Click(sender As Object, e As EventArgs) Handles cmdMathsHelp.Click @@ -4668,11 +4640,7 @@ Public Class ucrCalculator End Sub Private Sub MathsStatsStripMenuItem_Click(sender As Object, e As EventArgs) Handles MathsStatsStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Maths" Then - strPackageName = "stats" - End If - OpenHelpPage() + cmdMathsHelp.PerformClick() End Sub Private Sub cmdTransformHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformHelp.Click @@ -4684,11 +4652,7 @@ Public Class ucrCalculator End Sub Private Sub FactorForcatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FactorForcatsToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Factor" Then - strPackageName = "forcats" - End If - OpenHelpPage() + cmdTransformHelp.PerformClick() End Sub Private Sub cmdLogicalHelp_Click(sender As Object, e As EventArgs) Handles cmdLogicalHelp.Click @@ -4700,11 +4664,7 @@ Public Class ucrCalculator End Sub Private Sub LogBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogBaseToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Logical and Symbols" Then - strPackageName = "base" - End If - OpenHelpPage() + cmdLogicalHelp.PerformClick() End Sub Private Sub LogDplyrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogDplyrToolStripMenuItem.Click @@ -4724,11 +4684,7 @@ Public Class ucrCalculator End Sub Private Sub TxTStringrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTStringrToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then - strPackageName = "stringr" - End If - OpenHelpPage() + cmdStringRHelp.PerformClick() End Sub Private Sub TxTBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTBaseToolStripMenuItem.Click @@ -4748,11 +4704,7 @@ Public Class ucrCalculator End Sub Private Sub ProbStatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbStatsToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Probability" Then - strPackageName = "stats" - End If - OpenHelpPage() + cmdProbRHelp.PerformClick() End Sub Private Sub ProbBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbBaseToolStripMenuItem.Click @@ -4772,11 +4724,7 @@ Public Class ucrCalculator End Sub Private Sub DateLubridateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateLubridateToolStripMenuItem.Click - CalculationsOptions() - If ucrInputCalOptions.GetText = "Dates/Times" Then - strPackageName = "lubridate" - End If - OpenHelpPage() + cmdRHelp.PerformClick() End Sub Private Sub DateHmsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateHmsToolStripMenuItem.Click From 6f8dab4e24bb07bc6160f7059b66b21f121481ab Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Thu, 29 Dec 2022 13:29:22 +0100 Subject: [PATCH 84/88] Code Changes --- instat/ucrCalculator.vb | 78 +++++++---------------------------------- 1 file changed, 13 insertions(+), 65 deletions(-) diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index 8641c5c178f..98b94025d0f 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -1504,10 +1504,6 @@ Public Class ucrCalculator iCallType:=2, bSeparateThread:=False, bUpdateGrids:=False) End Sub - Private Sub cmdHelp_Click(sender As Object, e As EventArgs) - OpenHelpPage() - End Sub - Private Sub cmdTry_Click(sender As Object, e As EventArgs) RaiseEvent TryCommadClick() End Sub @@ -4033,7 +4029,7 @@ Public Class ucrCalculator End If End Sub - Private Sub cmdIntegerRHelp_Click(sender As Object, e As EventArgs) Handles cmdIntegerRHelp.Click + Private Sub cmdIntegerRHelp_Click(sender As Object, e As EventArgs) Handles cmdIntegerRHelp.Click, GmpToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Integer" Then strPackageName = "gmp" @@ -4327,10 +4323,6 @@ Public Class ucrCalculator End If End Sub - Private Sub GmpToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GmpToolStripMenuItem.Click - cmdIntegerRHelp.PerformClick() - End Sub - Private Sub ZseqToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZseqToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Integer" Then @@ -4371,7 +4363,7 @@ Public Class ucrCalculator End If End Sub - Private Sub cmdTransformRHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformRHelp.Click + Private Sub cmdTransformRHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformRHelp.Click, BaseToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Transform" Then strPackageName = "base" @@ -4379,10 +4371,6 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub BaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BaseToolStripMenuItem.Click - cmdTransformRHelp.PerformClick() - End Sub - Private Sub DplyrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DplyrToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Transform" Then @@ -4575,7 +4563,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub cmdSummaryRHelp_Click(sender As Object, e As EventArgs) Handles cmdSummaryRHelp.Click + Private Sub cmdSummaryRHelp_Click(sender As Object, e As EventArgs) Handles cmdSummaryRHelp.Click, BaseToolStripMenuItem1.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Summary" Then strPackageName = "base" @@ -4583,7 +4571,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub cmdComplexRHelp_Click(sender As Object, e As EventArgs) Handles cmdComplexRHelp.Click + Private Sub cmdComplexRHelp_Click(sender As Object, e As EventArgs) Handles cmdComplexRHelp.Click, ComplexBaseToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Complex" Then strPackageName = "base" @@ -4591,11 +4579,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub ComplexBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ComplexBaseToolStripMenuItem.Click - cmdComplexRHelp.PerformClick() - End Sub - - Private Sub cmdWakefieldHelp_Click(sender As Object, e As EventArgs) Handles cmdWakefieldHelp.Click + Private Sub cmdWakefieldHelp_Click(sender As Object, e As EventArgs) Handles cmdWakefieldHelp.Click, WakefieldToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Wakefield" Then strPackageName = "wakefield" @@ -4603,11 +4587,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub WakefieldToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles WakefieldToolStripMenuItem.Click - cmdWakefieldHelp.PerformClick() - End Sub - - Private Sub cmdCircularHelp_Click(sender As Object, e As EventArgs) Handles cmdCircularHelp.Click + Private Sub cmdCircularHelp_Click(sender As Object, e As EventArgs) Handles cmdCircularHelp.Click, CircularToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Circular" Then strPackageName = "circular" @@ -4615,11 +4595,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub CircularToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CircularToolStripMenuItem.Click - cmdCircularHelp.PerformClick() - End Sub - - Private Sub cmdHydroHelp_Click(sender As Object, e As EventArgs) Handles cmdHydroHelp.Click + Private Sub cmdHydroHelp_Click(sender As Object, e As EventArgs) Handles cmdHydroHelp.Click, HydroGOFToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "hydroGOF" Then strPackageName = "hydroGOF" @@ -4627,11 +4603,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub HydroGOFToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HydroGOFToolStripMenuItem.Click - cmdHydroHelp.PerformClick() - End Sub - - Private Sub cmdMathsHelp_Click(sender As Object, e As EventArgs) Handles cmdMathsHelp.Click + Private Sub cmdMathsHelp_Click(sender As Object, e As EventArgs) Handles cmdMathsHelp.Click, MathsStatsStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Maths" Then strPackageName = "stats" @@ -4639,11 +4611,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub MathsStatsStripMenuItem_Click(sender As Object, e As EventArgs) Handles MathsStatsStripMenuItem.Click - cmdMathsHelp.PerformClick() - End Sub - - Private Sub cmdTransformHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformHelp.Click + Private Sub cmdTransformHelp_Click(sender As Object, e As EventArgs) Handles cmdTransformHelp.Click, FactorForcatsToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Factor" Then strPackageName = "forcats" @@ -4651,11 +4619,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub FactorForcatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FactorForcatsToolStripMenuItem.Click - cmdTransformHelp.PerformClick() - End Sub - - Private Sub cmdLogicalHelp_Click(sender As Object, e As EventArgs) Handles cmdLogicalHelp.Click + Private Sub cmdLogicalHelp_Click(sender As Object, e As EventArgs) Handles cmdLogicalHelp.Click, LogBaseToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Logical and Symbols" Then strPackageName = "base" @@ -4663,10 +4627,6 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub LogBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogBaseToolStripMenuItem.Click - cmdLogicalHelp.PerformClick() - End Sub - Private Sub LogDplyrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogDplyrToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Logical and Symbols" Then @@ -4675,7 +4635,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub cmdStringRHelp_Click(sender As Object, e As EventArgs) Handles cmdStringRHelp.Click + Private Sub cmdStringRHelp_Click(sender As Object, e As EventArgs) Handles cmdStringRHelp.Click, TxTStringrToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then strPackageName = "stringr" @@ -4683,10 +4643,6 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub TxTStringrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTStringrToolStripMenuItem.Click - cmdStringRHelp.PerformClick() - End Sub - Private Sub TxTBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TxTBaseToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Text/Strings (Character Columns)" Then @@ -4695,7 +4651,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub cmdProbRHelp_Click(sender As Object, e As EventArgs) Handles cmdProbRHelp.Click + Private Sub cmdProbRHelp_Click(sender As Object, e As EventArgs) Handles cmdProbRHelp.Click, ProbStatsToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Probability" Then strPackageName = "stats" @@ -4703,10 +4659,6 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub ProbStatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbStatsToolStripMenuItem.Click - cmdProbRHelp.PerformClick() - End Sub - Private Sub ProbBaseToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProbBaseToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Probability" Then @@ -4715,7 +4667,7 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub cmdRHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click + Private Sub cmdRHelp_Click(sender As Object, e As EventArgs) Handles cmdRHelp.Click, DateLubridateToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Dates/Times" Then strPackageName = "lubridate" @@ -4723,10 +4675,6 @@ Public Class ucrCalculator OpenHelpPage() End Sub - Private Sub DateLubridateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateLubridateToolStripMenuItem.Click - cmdRHelp.PerformClick() - End Sub - Private Sub DateHmsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateHmsToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Dates/Times" Then From bad4c338c7a221a48fc0d082748e6466df5f690d Mon Sep 17 00:00:00 2001 From: Derrick Agorhom <76208189+derekagorhom@users.noreply.github.com> Date: Fri, 30 Dec 2022 10:42:03 +0100 Subject: [PATCH 85/88] changes --- instat/ucrCalculator.vb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/instat/ucrCalculator.vb b/instat/ucrCalculator.vb index 98b94025d0f..892f774f8a4 100644 --- a/instat/ucrCalculator.vb +++ b/instat/ucrCalculator.vb @@ -4519,10 +4519,6 @@ Public Class ucrCalculator End If End Sub - Private Sub BaseToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles BaseToolStripMenuItem1.Click - cmdSummaryRHelp.PerformClick() - End Sub - Private Sub StatsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StatsToolStripMenuItem.Click CalculationsOptions() If ucrInputCalOptions.GetText = "Summary" Then From 8cf629c94936f4690f353ee2482251b6b74d54ce Mon Sep 17 00:00:00 2001 From: Sophie Date: Wed, 4 Jan 2023 13:59:55 +0100 Subject: [PATCH 86/88] minor modification code --- instat/dlgDescribeTwoVarGraph.vb | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/instat/dlgDescribeTwoVarGraph.vb b/instat/dlgDescribeTwoVarGraph.vb index 846f2c4cf5a..4b7340e7178 100644 --- a/instat/dlgDescribeTwoVarGraph.vb +++ b/instat/dlgDescribeTwoVarGraph.vb @@ -1004,19 +1004,11 @@ Public Class dlgDescribeTwoVarGraph End Sub Private Sub HideShowOptions() - If rdoPairs.Checked Then - cmdOptions.Visible = False - cmdPairOptions.Visible = True - If Not ucrReceiverColour.IsEmpty Then - cmdPairOptions.Enabled = True - Else - cmdPairOptions.Enabled = False - End If - Else - cmdPairOptions.Visible = False - cmdOptions.Visible = True - End If + cmdOptions.Visible = Not rdoPairs.Checked + cmdPairOptions.Visible = rdoPairs.Checked + cmdPairOptions.Enabled = cmdPairOptions.Visible AndAlso Not ucrReceiverColour.IsEmpty End Sub + Private Sub AddRemoveColourParameter() If Not ucrReceiverColour.IsEmpty And rdoPairs.Checked Then clsGGpairsFunction.AddParameter("colour", clsRFunctionParameter:=clsGGpairAesFunction, bIncludeArgumentName:=False, iPosition:=2) From 9919c937ba9eb27102a75f6bf3c3e1b3c9e5a733 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Jan 2023 09:22:29 +0100 Subject: [PATCH 87/88] Minor changes --- instat/static/InstatObject/R/install_packages.R | 3 +++ 1 file changed, 3 insertions(+) diff --git a/instat/static/InstatObject/R/install_packages.R b/instat/static/InstatObject/R/install_packages.R index a2034347c88..8f999107a36 100644 --- a/instat/static/InstatObject/R/install_packages.R +++ b/instat/static/InstatObject/R/install_packages.R @@ -134,6 +134,9 @@ pkgs <- # also install aida-package from GitHub remotes::install_github('michael-franke/aida-package') "corrr", "dslabs", + "coin", + "pingr", + "vcdExtra", # For inspect, read, edit and run files for 'APSIM' "apsimx" ) From a489c7ea918456053d8df359259f45732220db16 Mon Sep 17 00:00:00 2001 From: lloyddewit <57253949+lloyddewit@users.noreply.github.com> Date: Mon, 9 Jan 2023 10:47:57 +0100 Subject: [PATCH 88/88] Update instat/static/InstatObject/R/install_packages.R --- instat/static/InstatObject/R/install_packages.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instat/static/InstatObject/R/install_packages.R b/instat/static/InstatObject/R/install_packages.R index 8f999107a36..35a84e8a344 100644 --- a/instat/static/InstatObject/R/install_packages.R +++ b/instat/static/InstatObject/R/install_packages.R @@ -134,7 +134,7 @@ pkgs <- # also install aida-package from GitHub remotes::install_github('michael-franke/aida-package') "corrr", "dslabs", - "coin", + "coin", "pingr", "vcdExtra", # For inspect, read, edit and run files for 'APSIM'
- Matches when the calculated layout contains the specified substring. - This filter is deprecated in favor of <when /> which is based on conditions. -
+ Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. +