예제 #1
0
        void DoTest(string testLog, params ExpectedMessage[] expectedMessages)
        {
            ExpectedLog expectedLog = new ExpectedLog();

            expectedLog.Add(0, expectedMessages);
            DoTest(testLog, expectedLog);
        }
예제 #2
0
        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);
        }
예제 #4
0
        /// <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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
 /// <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)));
 }
예제 #11
0
        /// <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());
        }
예제 #12
0
 void DoTest(string testLog, ExpectedLog expectedLog)
 {
     ReaderIntegrationTest.Test(CreateReaderFactory(), testLog, expectedLog);
 }