+ {
+ new StubHealthCheck1(StatusResultType.Success, "First check was successful"),
+ new StubHealthCheck2(StatusResultType.Success, "Second check was successful"),
+ };
+ var results = new HealthCheckResults(checks);
+
+ var resultAsMarkdown = results.ResultsAsMarkDown(HealthCheckNotificationVerbosity.Detailed);
+ Assert.IsFalse(resultAsMarkdown.IndexOf("Result: 'Success'\r\n") > -1);
+ Assert.IsTrue(resultAsMarkdown.IndexOf("Result: 'Success', Message: 'First check was successful'\r\n") > -1);
+ }
}
}
diff --git a/src/Umbraco.Web.UI/config/HealthChecks.config b/src/Umbraco.Web.UI/config/HealthChecks.config
index 09fe120129..a4c4d374fb 100644
--- a/src/Umbraco.Web.UI/config/HealthChecks.config
+++ b/src/Umbraco.Web.UI/config/HealthChecks.config
@@ -1,23 +1,22 @@
-
+
-
-
+
+
-
-
-
-
-
+
+
diff --git a/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs b/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs
index b16d12d0fb..a334e9dbb8 100644
--- a/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs
+++ b/src/Umbraco.Web/HealthCheck/HealthCheckResults.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using MarkdownSharp;
+using Umbraco.Core.Configuration.HealthChecks;
using Umbraco.Core.Logging;
namespace Umbraco.Web.HealthCheck
@@ -72,7 +73,7 @@ namespace Umbraco.Web.HealthCheck
}
}
- internal string ResultsAsMarkDown(bool slackMarkDown = false)
+ internal string ResultsAsMarkDown(HealthCheckNotificationVerbosity verbosity, bool slackMarkDown = false)
{
var newItem = "- ";
if (slackMarkDown)
@@ -105,17 +106,25 @@ namespace Umbraco.Web.HealthCheck
foreach (var checkResult in checkResults)
{
- sb.AppendFormat("\t{0}Result: '{1}', Message: '{2}'{3}", newItem, checkResult.ResultType, SimpleHtmlToMarkDown(checkResult.Message, slackMarkDown), Environment.NewLine);
+ sb.AppendFormat("\t{0}Result: '{1}'", newItem, checkResult.ResultType);
+
+ // With summary logging, only record details of warnings or errors
+ if (checkResult.ResultType != StatusResultType.Success || verbosity == HealthCheckNotificationVerbosity.Detailed)
+ {
+ sb.AppendFormat(", Message: '{0}'", SimpleHtmlToMarkDown(checkResult.Message, slackMarkDown));
+ }
+
+ sb.AppendLine(Environment.NewLine);
}
}
return sb.ToString();
}
- internal string ResultsAsHtml()
+ internal string ResultsAsHtml(HealthCheckNotificationVerbosity verbosity)
{
var mark = new Markdown();
- var html = mark.Transform(ResultsAsMarkDown());
+ var html = mark.Transform(ResultsAsMarkDown(verbosity));
html = ApplyHtmlHighlighting(html);
return html;
}
@@ -130,7 +139,7 @@ namespace Umbraco.Web.HealthCheck
private string ApplyHtmlHighlightingForStatus(string html, StatusResultType status, string color)
{
return html
- .Replace("Result: '" + status + "'", "Result " + status + "");
+ .Replace("Result: '" + status + "'", "Result: " + status + "");
}
private string SimpleHtmlToMarkDown(string html, bool slackMarkDown = false)
diff --git a/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs b/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs
index 08bb3663b1..e0ca48fb8c 100644
--- a/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs
+++ b/src/Umbraco.Web/Scheduling/HealthCheckNotifier.cs
@@ -70,25 +70,27 @@ namespace Umbraco.Web.Scheduling
results.LogResults();
// Send to email address if configured
- if (healthCheckConfig.NotificationSettings.EmailSettings != null && string.IsNullOrEmpty(healthCheckConfig.NotificationSettings.EmailSettings.RecipientEmail) == false)
+ var emailNotificationSettings = healthCheckConfig.NotificationSettings.EmailSettings;
+ if (emailNotificationSettings != null && string.IsNullOrEmpty(emailNotificationSettings.RecipientEmail) == false)
{
using (var client = new SmtpClient())
using (var mailMessage = new MailMessage())
{
- mailMessage.To.Add(healthCheckConfig.NotificationSettings.EmailSettings.RecipientEmail);
+ mailMessage.To.Add(emailNotificationSettings.RecipientEmail);
mailMessage.Body = string.Format("Results of the scheduled Umbraco Health Checks run on {0} at {1} are as follows:
{2}",
- DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), results.ResultsAsHtml());
- mailMessage.Subject = healthCheckConfig.NotificationSettings.EmailSettings.Subject;
+ DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), results.ResultsAsHtml(emailNotificationSettings.Verbosity));
+ mailMessage.Subject = emailNotificationSettings.Subject;
mailMessage.IsBodyHtml = true;
await client.SendMailAsync(mailMessage);
}
}
- // send Slack Incoming Webhook if configured
- if (healthCheckConfig.NotificationSettings.SlackSettings != null && string.IsNullOrEmpty(healthCheckConfig.NotificationSettings.SlackSettings.WebHookUrl) == false)
+ // Send Slack incoming webhook if configured
+ var slackNotificationSettings = healthCheckConfig.NotificationSettings.SlackSettings;
+ if (slackNotificationSettings != null && string.IsNullOrEmpty(slackNotificationSettings.WebHookUrl) == false)
{
- var slackClient = new SlackClient(healthCheckConfig.NotificationSettings.SlackSettings.WebHookUrl);
+ var slackClient = new SlackClient(slackNotificationSettings.WebHookUrl);
var icon = Emoji.Warning;
if (results.AllChecksSuccessful)
@@ -98,10 +100,10 @@ namespace Umbraco.Web.Scheduling
var slackMessage = new SlackMessage
{
- Channel = healthCheckConfig.NotificationSettings.SlackSettings.Channel,
- Text = results.ResultsAsMarkDown(true),
+ Channel = slackNotificationSettings.Channel,
+ Text = results.ResultsAsMarkDown(slackNotificationSettings.Verbosity, true),
IconEmoji = icon,
- Username = healthCheckConfig.NotificationSettings.SlackSettings.UserName
+ Username = slackNotificationSettings.UserName
};
slackClient.Post(slackMessage);
}