Exemplo n.º 1
0
		public void Format(
			JsonMessageFormatterStyle style,
			LogMessageField           fields,
			LogMessage                message,
			string                    newline,
			string                    expected)
		{
			// test set knows that the newline character sequence is not relevant, if newline == null
			// => set it explicitly to satisfy the formatter
			if (newline == null) newline = "\n";

			var formatter = new JsonMessageFormatter { Style = style, Newline = newline };

			if (fields.HasFlag(LogMessageField.Timestamp)) formatter.AddTimestampField();
			if (fields.HasFlag(LogMessageField.HighPrecisionTimestamp)) formatter.AddHighPrecisionTimestampField();
			if (fields.HasFlag(LogMessageField.LogWriterName)) formatter.AddLogWriterField();
			if (fields.HasFlag(LogMessageField.LogLevelName)) formatter.AddLogLevelField();
			if (fields.HasFlag(LogMessageField.Tags)) formatter.AddTagsField();
			if (fields.HasFlag(LogMessageField.ApplicationName)) formatter.AddApplicationNameField();
			if (fields.HasFlag(LogMessageField.ProcessName)) formatter.AddProcessNameField();
			if (fields.HasFlag(LogMessageField.ProcessId)) formatter.AddProcessIdField();
			if (fields.HasFlag(LogMessageField.Text)) formatter.AddTextField();

			Assert.Equal(fields, formatter.FormattedFields);

			string output = formatter.Format(message);
			Assert.Equal(expected, output);
		}
Exemplo n.º 2
0
		public void Format_EscapingKeys(JsonMessageFormatterStyle style, LogMessageField fields)
		{
			var message = new LogMessage();
			var formatter = new JsonMessageFormatter { Style = style, Newline = "\n" };

			if (fields.HasFlag(LogMessageField.Timestamp)) formatter.AddTimestampField("u", sUnescapedString);
			if (fields.HasFlag(LogMessageField.HighPrecisionTimestamp)) formatter.AddHighPrecisionTimestampField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.LogWriterName)) formatter.AddLogWriterField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.LogLevelName)) formatter.AddLogLevelField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.Tags)) formatter.AddTagsField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.ApplicationName)) formatter.AddApplicationNameField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.ProcessName)) formatter.AddProcessNameField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.ProcessId)) formatter.AddProcessIdField(sUnescapedString);
			if (fields.HasFlag(LogMessageField.Text)) formatter.AddTextField(sUnescapedString);

			Assert.Equal(fields, formatter.FormattedFields);

			// prepare regex to match output
			string pattern;
			switch (style)
			{
				case JsonMessageFormatterStyle.Compact:
					pattern = "^{\"(.+)\":.+}$";
					break;

				case JsonMessageFormatterStyle.OneLine:
					pattern = "^{ \"(.+)\" : .+ }$";
					break;

				case JsonMessageFormatterStyle.Beautified:
				default:
					pattern = "^{\n    \"(.+)\" : .+\n}$";
					break;
			}

			var regex = new Regex(pattern);

			// check whether the key has been escaped properly (without escaping the solidus)
			formatter.EscapeSolidus = false;
			string output1 = formatter.Format(message);
			var match1 = regex.Match(output1);
			Assert.True(match1.Success);
			Assert.Equal(sEscapedString_WithoutSolidus, match1.Groups[1].Value);

			// check whether the key has been escaped properly (with escaping the solidus)
			formatter.EscapeSolidus = true;
			string output2 = formatter.Format(message);
			var match2 = regex.Match(output2);
			Assert.True(match2.Success);
			Assert.Equal(sEscapedString_WithSolidus, match2.Groups[1].Value);
		}
Exemplo n.º 3
0
		public void Format_EscapingValues(JsonMessageFormatterStyle style, LogMessageField fields)
		{
			var formatter = new JsonMessageFormatter { Style = style, Newline = "\n" };

			string key = "";
			var message = new LogMessage();

			if (fields.HasFlag(LogMessageField.LogWriterName))
			{
				key = "LogWriter";
				formatter.AddLogWriterField(key);
				message.LogWriterName = sUnescapedString;
			}

			if (fields.HasFlag(LogMessageField.LogLevelName))
			{
				key = "LogLevel";
				formatter.AddLogLevelField(key);
				message.LogLevelName = sUnescapedString;
			}

			if (fields.HasFlag(LogMessageField.ApplicationName))
			{
				key = "ApplicationName";
				formatter.AddApplicationNameField(key);
				message.ApplicationName = sUnescapedString;
			}

			if (fields.HasFlag(LogMessageField.ProcessName))
			{
				key = "ProcessName";
				formatter.AddProcessNameField(key);
				message.ProcessName = sUnescapedString;
			}

			if (fields.HasFlag(LogMessageField.Text))
			{
				key = "Text";
				formatter.AddTextField(key);
				message.Text = sUnescapedString;
			}

			Assert.Equal(fields, formatter.FormattedFields);

			// prepare regex to match output
			string pattern;
			switch (style)
			{
				case JsonMessageFormatterStyle.Compact:
					pattern = "^{\"(.+)\":\"(.+)\"}$";
					break;

				case JsonMessageFormatterStyle.OneLine:
					pattern = "^{ \"(.+)\" : \"(.+)\" }$";
					break;

				case JsonMessageFormatterStyle.Beautified:
				default:
					pattern = "^{\n    \"(.+)\" : \"(.+)\"\n}$";
					break;
			}

			var regex = new Regex(pattern);

			// check whether the key has been escaped properly (without escaping the solidus)
			formatter.EscapeSolidus = false;
			string output1 = formatter.Format(message);
			var match1 = regex.Match(output1);
			Assert.True(match1.Success);
			Assert.Equal(key, match1.Groups[1].Value);
			Assert.Equal(sEscapedString_WithoutSolidus, match1.Groups[2].Value);

			// check whether the key has been escaped properly (with escaping the solidus)
			formatter.EscapeSolidus = true;
			string output2 = formatter.Format(message);
			var match2 = regex.Match(output2);
			Assert.True(match2.Success);
			Assert.Equal(key, match2.Groups[1].Value);
			Assert.Equal(sEscapedString_WithSolidus, match2.Groups[2].Value);
		}