void DoTest(string testLog, params ExpectedMessage[] expectedMessages) { ExpectedLog expectedLog = new ExpectedLog(); expectedLog.Add(0, expectedMessages); DoTest(testLog, expectedLog); }
public void EnterTestWithoutArguments(string targetMessage, ExpectedLog expectedLog) { List <TestLog> logs = new List <TestLog>(); TestLogger <string> logger = new TestLogger <string>(logs); // ログ出力 Rms.Server.Core.Utility.Extensions.LoggerExtensions.Enter(logger, targetMessage); // ログを確認する CheckEqualityLogLevelsAndMessages(logs, expectedLog, null); }
private void ParseAndVerifyLog(ExpectedLog expectedLog, string logContent, XmlDocument formatDocument) { var formatXml = formatDocument.OuterXml; var repo = new TestFormatsRepository(XDocument.Parse(formatXml).Root); ILogProviderFactoryRegistry reg = new LogProviderFactoryRegistry(); IUserDefinedFormatsManager formatsManager = new UserDefinedFormatsManager(repo, reg, tempFilesManager); RegularGrammar.UserDefinedFormatFactory.Register(formatsManager); formatsManager.ReloadFactories(); ReaderIntegrationTest.Test(reg.Find("Test", "Test") as IMediaBasedReaderFactory, logContent, expectedLog, Encoding.UTF8); }
/// <summary> /// 出力したログをチェックする /// </summary> /// <param name="actualLogs">出力したログのリスト</param> /// <param name="expectedLog">テスト結果として期待するログ</param> /// <param name="expectedArgs">テスト結果として期待するログに渡す引数</param> private void CheckEqualityLogLevelsAndMessages(List <TestLog> actualLogs, ExpectedLog expectedLog, LoggerExtensionsTestObject expectedArgs) { // ログは1つだけ出力 Assert.AreEqual(1, actualLogs.Count); // ログオブジェクトがnullでない Assert.IsNotNull(actualLogs[0]); // ログレベルを確認 Assert.AreEqual(expectedLog.LogLevel, actualLogs[0].LogLevel); // ログオブジェクトのメッセージが期待した値になっていることを確認 Assert.AreEqual(true, actualLogs[0].GetSimpleText().Contains(ExpectedLog.GetMessageWithArguments(expectedLog, expectedArgs))); }
void TestLayout(string layout, Action <Logger, ExpectedLog> loggingCallback) { var logManagerType = log4NetAsm.GetType("log4net.LogManager"); dynamic hierarchy = logManagerType.InvokeMember("GetRepository", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, null); dynamic patternLayout = log4NetAsm.CreateInstance("log4net.Layout.PatternLayout"); patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; patternLayout.ActivateOptions(); TextWriter logWriter = new StringWriter(); dynamic memory = log4NetAsm.CreateInstance("log4net.Appender.TextWriterAppender"); memory.Layout = patternLayout; memory.Writer = logWriter; memory.ActivateOptions(); hierarchy.Root.AddAppender(memory); //hierarchy.Root.Level = Level.Info; hierarchy.Configured = true; var logger = logManagerType.InvokeMember("GetLogger", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, new [] { GetType() }); var expectedLog = new ExpectedLog(); loggingCallback(new Logger() { impl = logger }, expectedLog); var logContent = logWriter.ToString(); var formatDocument = CreateTestFormatSkeleton(); Log4NetPatternImporter.GenerateRegularGrammarElement(formatDocument.DocumentElement, layout); ParseAndVerifyLog(expectedLog, logContent, formatDocument); }
public void EnterJsonTest(string targetMessage, LoggerExtensionsTestObject targetArgs, ExpectedLog expectedLog) { List <TestLog> logs = new List <TestLog>(); TestLogger <string> logger = new TestLogger <string>(logs); // ログ出力 Rms.Server.Core.Utility.Extensions.LoggerExtensions.EnterJson(logger, targetMessage, targetArgs); // ログを確認する CheckEqualityLogLevelsAndMessages(logs, expectedLog, targetArgs); }
public void EnterTestWithArguments(string targetMessage, LoggerExtensionsTestObject targetArgs, ExpectedLog expectedLog) { List <TestLog> logs = new List <TestLog>(); TestLogger <string> logger = new TestLogger <string>(logs); // ログ出力 Rms.Server.Core.Utility.Extensions.LoggerExtensions.Enter( logger, targetMessage, new object[] { LoggerExtensionsTestObject.GetJsonString(targetArgs) } ); // ログを確認する CheckEqualityLogLevelsAndMessages(logs, expectedLog, targetArgs); }
public void ErrorTestWithoutArgumentsWithException(Exception targetException, string targetMessageCode, ExpectedLog expectedLog) { List <TestLog> logs = new List <TestLog>(); TestLogger <string> logger = new TestLogger <string>(logs); // ログ出力 Rms.Server.Core.Utility.Extensions.LoggerExtensions.Error(logger, targetException, targetMessageCode); // ログを確認する CheckEqualityLogLevelsAndExceptionsAndMessages(logs, expectedLog, null); }
public void WarnJsonWithException( Exception targetException, string targetMessageCode, LoggerExtensionsTestObject targetArgs, ExpectedLog expectedLog) { List <TestLog> logs = new List <TestLog>(); TestLogger <string> logger = new TestLogger <string>(logs); // ログ出力 Rms.Server.Core.Utility.Extensions.LoggerExtensions.WarnJson(logger, targetException, targetMessageCode, targetArgs); // ログを確認する CheckEqualityLogLevelsAndExceptionsAndMessages(logs, expectedLog, targetArgs); }
/// <summary> /// 指定したメッセージフォーマットに引数を渡してログメッセージを生成する /// </summary> /// <param name="jsonObject">引数に渡すJSONオブジェクト</param> /// <returns>引数つきのログメッセージ</returns> /// <remarks> /// メッセージフォーマットにプレースホルダーが無い場合には引数として渡したJSONオブジェクトは無視される。 /// 引数に渡すオブジェクトの数とプレースホルダーの数が一致しないとFormatExceptionが発生するので注意 /// </remarks> public static string GetMessageWithArguments(ExpectedLog expectedLog, LoggerExtensionsTestObject jsonObject) { return(string.Format(expectedLog.MessageFormat, LoggerExtensionsTestObject.GetJsonString(jsonObject))); }
/// <summary> /// 出力した例外付きログをチェックする /// </summary> /// <param name="actualLogs">出力したログのリスト</param> /// <param name="expectedLog">テスト結果として期待するログ</param> /// <param name="expectedArgs">テスト結果として期待するログに渡す引数</param> private void CheckEqualityLogLevelsAndExceptionsAndMessages(List <TestLog> actualLogs, ExpectedLog expectedLog, LoggerExtensionsTestObject expectedArgs) { // ログレベルとメッセージの確認 CheckEqualityLogLevelsAndMessages(actualLogs, expectedLog, expectedArgs); // Exceptionの確認 Exception exception = actualLogs[0].Exception; Assert.IsNotNull(exception); Assert.AreEqual(expectedLog.Exception.GetType(), exception.GetType()); }
void DoTest(string testLog, ExpectedLog expectedLog) { ReaderIntegrationTest.Test(CreateReaderFactory(), testLog, expectedLog); }