You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/07/20 16:55:21 UTC

[18/24] incubator-ignite git commit: # ignite-788: cosnole messages

# ignite-788: cosnole messages


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/53b4e2a7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/53b4e2a7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/53b4e2a7

Branch: refs/heads/ignite-788-last-review
Commit: 53b4e2a7dbeac3625623486fadc3e031201af72e
Parents: d3315eb
Author: ashutak <as...@gridgain.com>
Authored: Fri Jul 17 19:11:49 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Fri Jul 17 19:11:49 2015 +0300

----------------------------------------------------------------------
 .../src/test/config/log4j2-verbose-test.xml     |  42 ++---
 .../ignite/logger/log4j2/ContextTestTmp.java    |  51 +++---
 .../ignite/logger/log4j2/Log4J2Logger.java      | 161 +++++++++++++------
 .../logger/log4j2/GridLog4j2SelfTest.java       |  59 +++++--
 4 files changed, 204 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53b4e2a7/modules/core/src/test/config/log4j2-verbose-test.xml
----------------------------------------------------------------------
diff --git a/modules/core/src/test/config/log4j2-verbose-test.xml b/modules/core/src/test/config/log4j2-verbose-test.xml
index 4c75689..8abb07f 100644
--- a/modules/core/src/test/config/log4j2-verbose-test.xml
+++ b/modules/core/src/test/config/log4j2-verbose-test.xml
@@ -18,26 +18,26 @@
 -->
 
 <Configuration>
-    <!--<Appenders>-->
-        <!--<Routing name="FILE">-->
-            <!--<Routes pattern="$${sys:nodeId}">-->
-                <!--<Route>-->
-                    <!--<RollingFile name="Rolling-${sys:nodeId}" fileName="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}.log"-->
-                                 <!--filePattern="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}-%i-%d{yyyy-MM-dd}.log.gz">-->
-                        <!--<PatternLayout pattern="[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n"/>-->
-                        <!--<Policies>-->
-                            <!--<TimeBasedTriggeringPolicy interval="6" modulate="true" />-->
-                            <!--<SizeBasedTriggeringPolicy size="10 MB" />-->
-                        <!--</Policies>-->
-                    <!--</RollingFile>-->
-                <!--</Route>-->
-            <!--</Routes>-->
-        <!--</Routing>-->
-    <!--</Appenders>-->
+    <Appenders>
+        <Routing name="FILE">
+            <Routes pattern="$${sys:nodeId}">
+                <Route>
+                    <RollingFile name="Rolling-${sys:nodeId}" fileName="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}.log"
+                                 filePattern="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}-%i-%d{yyyy-MM-dd}.log.gz">
+                        <PatternLayout pattern="[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n"/>
+                        <Policies>
+                            <TimeBasedTriggeringPolicy interval="6" modulate="true" />
+                            <SizeBasedTriggeringPolicy size="10 MB" />
+                        </Policies>
+                    </RollingFile>
+                </Route>
+            </Routes>
+        </Routing>
+    </Appenders>
 
-    <!--<Loggers>-->
-        <!--<Root level="INFO">-->
-            <!--&lt;!&ndash;<AppenderRef ref="FILE" level="DEBUG"/>&ndash;&gt;-->
-        <!--</Root>-->
-    <!--</Loggers>-->
+    <Loggers>
+        <Root level="INFO">
+            <AppenderRef ref="FILE" level="DEBUG"/>
+        </Root>
+    </Loggers>
 </Configuration>

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53b4e2a7/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/ContextTestTmp.java
----------------------------------------------------------------------
diff --git a/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/ContextTestTmp.java b/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/ContextTestTmp.java
index 5b6d4ad..cb91303 100644
--- a/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/ContextTestTmp.java
+++ b/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/ContextTestTmp.java
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.core.config.*;
 import org.apache.logging.log4j.core.layout.*;
 
 import java.net.*;
+import java.nio.charset.*;
 
 /**
  * TODO: Add class description.
@@ -40,20 +41,30 @@ public class ContextTestTmp {
 
         final URL cfgUrl = U.resolveIgniteUrl("modules/core/src/test/config/log4j2-verbose-test.xml");
 
-        Configurator.initialize(LogManager.ROOT_LOGGER_NAME, cfgUrl.toString());
+        String loggerName = LogManager.ROOT_LOGGER_NAME;
 
-        LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
-        AbstractConfiguration cfg = (AbstractConfiguration) ctx.getConfiguration();
-        ConsoleAppender appender = ConsoleAppender.createDefaultAppenderForLayout(PatternLayout.createDefaultLayout());
+        Configurator.initialize(loggerName, cfgUrl.toString());
+
+        LoggerContext context= (LoggerContext) LogManager.getContext();
+        Configuration config= context.getConfiguration();
+
+        PatternLayout layout= PatternLayout.createLayout("%m%n", null, null, Charset.defaultCharset(),false,false,null,null);
+        Appender appender=ConsoleAppender.createAppender(layout, null, null, "CONSOLE_APPENDER", null, null);
         appender.start();
-        cfg.addAppender(appender);
-        AppenderRef[] refs = new AppenderRef[] { AppenderRef.createAppenderRef(appender.getName(), null, null) };
-        LoggerConfig loggerConfig = LoggerConfig.createLogger("false", Level.ALL, LogManager.ROOT_LOGGER_NAME, "true", refs, null, cfg, null);
-        loggerConfig.addAppender(appender, null, null);
-        cfg.addLogger(LogManager.ROOT_LOGGER_NAME, loggerConfig);
-        ctx.updateLoggers();
+        AppenderRef ref= AppenderRef.createAppenderRef("CONSOLE_APPENDER",null,null);
+        AppenderRef[] refs = new AppenderRef[] {ref};
+        LoggerConfig loggerConfig= LoggerConfig.createLogger("false", Level.INFO,"CONSOLE_LOGGER","CONSOLE_LOGGER",refs,null,null,null);
+        loggerConfig.addAppender(appender,null,null);
+
+        config.addAppender(appender);
+        config.addLogger("CONSOLE_LOGGER", loggerConfig);
+        context.updateLoggers(config);
+
+        Logger logger=LogManager.getContext().getLogger("CONSOLE_LOGGER");
+        logger.info("HELLO_WORLD");
 
-        logTest();
+        logTest(logger);
+        logTest(LogManager.getRootLogger());
 
         System.out.println("FInish");
     }
@@ -82,15 +93,15 @@ public class ContextTestTmp {
         ctx.updateLoggers();
     }
 
-    private static void logTest() {
-        LogManager.getRootLogger().log(Level.OFF, "*******************");
-        LogManager.getRootLogger().log(Level.FATAL, "*******************");
-        LogManager.getRootLogger().log(Level.ERROR, "*******************");
-        LogManager.getRootLogger().log(Level.WARN, "*******************");
-        LogManager.getRootLogger().log(Level.INFO, "*******************");
-        LogManager.getRootLogger().log(Level.DEBUG, "*******************");
-        LogManager.getRootLogger().log(Level.TRACE, "*******************");
-        LogManager.getRootLogger().log(Level.ALL, "*******************");
+    private static void logTest(Logger logger) {
+        logger.log(Level.OFF, "*******************");
+        logger.log(Level.FATAL, "*******************");
+        logger.log(Level.ERROR, "*******************");
+        logger.log(Level.WARN, "*******************");
+        logger.log(Level.INFO, "*******************");
+        logger.log(Level.DEBUG, "*******************");
+        logger.log(Level.TRACE, "*******************");
+        logger.log(Level.ALL, "*******************");
     }
 
     private static void addConsoleAppender(final Logger logger, final Level maxLevel) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53b4e2a7/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/Log4J2Logger.java
----------------------------------------------------------------------
diff --git a/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/Log4J2Logger.java b/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/Log4J2Logger.java
index 8fc4e57..ef8e73a 100644
--- a/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/Log4J2Logger.java
+++ b/modules/log4j2/src/main/java/org/apache/ignite/logger/log4j2/Log4J2Logger.java
@@ -29,11 +29,13 @@ import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.core.appender.*;
 import org.apache.logging.log4j.core.appender.routing.*;
 import org.apache.logging.log4j.core.config.*;
+import org.apache.logging.log4j.core.layout.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
 import java.lang.reflect.*;
 import java.net.*;
+import java.nio.charset.*;
 import java.util.*;
 
 import static org.apache.ignite.IgniteSystemProperties.*;
@@ -72,6 +74,9 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
     public static final String NODE_ID = "nodeId";
 
     /** */
+    public static final String CONSOLE_APPENDER = "autoConfiguredIgniteConsoleAppender";
+
+    /** */
     private static volatile boolean inited;
 
     /** */
@@ -85,6 +90,8 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
     @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
     private Logger impl;
 
+    private volatile Logger consoleLogger;
+
     /** Quiet flag. */
     private final boolean quiet;
 
@@ -95,9 +102,11 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
      * Creates new logger with given implementation.
      *
      * @param impl Log4j implementation to use.
+     * @param consoleLogger
      */
-    public Log4J2Logger(final Logger impl) {
+    public Log4J2Logger(final Logger impl, Logger consoleLogger) {
         assert impl != null;
+        this.consoleLogger = consoleLogger;
 
         addConsoleAppenderIfNeeded(new C1<Boolean, Logger>() {
             @Override public Logger apply(Boolean init) {
@@ -303,75 +312,112 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
                 // User configured console appender, but log is quiet.
                 quiet = false;
 
-//            if (!consoleAppenderFound && !quiet && Boolean.valueOf(System.getProperty(IGNITE_CONSOLE_APPENDER, "true"))) {
-//                // Console appender not found => we've looked through all categories up to root.
-//                assert rootLogger != null;
-//
-//                // User launched ignite in verbose mode and did not add console appender with INFO level
-//                // to configuration and did not set IGNITE_CONSOLE_APPENDER to false.
-//                if (errAppender != null) {
-//                    rootLogger.addAppender(createConsoleAppender(Level.INFO));
-//
-//                    // TODO implement.
-////                    if (errAppender.getThreshold() == Level.ERROR)
-////                        errAppender.setThreshold(Level.WARN);
-////                }
-////                else
-////                    // No error console appender => create console appender with no level limit.
-////                    rootLogger.addAppender(createConsoleAppender(Level.OFF));
-////
-//////                if (logLevel != null)
-//////                    impl.setLevel(logLevel);
-//                }
-//                else
-//                    // No error console appender => create console appender with no level limit.
-//                    rootLogger.addAppender(createConsoleAppender(Level.OFF));
-//
-//                if (logLevel != null)
-//                    impl.setLevel(logLevel);
-//            }
+            if (!consoleAppenderFound && !quiet && Boolean.valueOf(System.getProperty(IGNITE_CONSOLE_APPENDER, "true"))) {
+                // Console appender not found => we've looked through all categories up to root.
+                assert rootLogger != null;
+
+                // User launched ignite in verbose mode and did not add console appender with INFO level
+                // to configuration and did not set IGNITE_CONSOLE_APPENDER to false.
+                if (errAppender != null) {
+                    consoleLogger = createConsoleLogger(rootLogger, Level.INFO);
+
+//                    if (errAppender.getThreshold() == Level.ERROR)
+//                        errAppender.setThreshold(Level.WARN);
+                }
+                else
+                    // No error console appender => create console appender with no level limit.
+                    consoleLogger = createConsoleLogger(rootLogger, Level.ALL);
+            }
 
             quiet0 = quiet;
             inited = true;
         }
     }
 
-//    /**
-//     * Creates console appender with some reasonable default logging settings.
-//     *
-//     * @param maxLevel Max logging level.
-//     * @return New console appender.
-//     */
-//    // TODO review.
-//    private Appender createConsoleAppender(Level maxLevel) {
-//        ConsoleAppender console = ConsoleAppender.createAppender(PatternLayout.createDefaultLayout(), null,
-//            "SYSTEM_OUT", "console", null, null);
-//
-//        final LoggerContext ctx = new LoggerContext("console");
+//    private void createConsoleLogger(Logger logger, Level maxLevel) {
+//        final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
 //
 //        final Configuration cfg = ctx.getConfiguration();
 //
-//        console.start();
+//        ConsoleAppender appender = ConsoleAppender.createAppender(PatternLayout.createDefaultLayout(), null,
+//            "SYSTEM_OUT", CONSOLE_APPENDER, null, null);
+//
+//        appender.start();
 //
-//        cfg.addAppender(console);
+//        cfg.addAppender(appender);
 //
-//        AppenderRef ref = AppenderRef.createAppenderRef("console", null, null);
+//        LoggerConfig oldLogCfg = cfg.getLoggerConfig(logger.getName());
 //
-//        AppenderRef[] refs = new AppenderRef[] {ref};
+//        AppenderRef ref = AppenderRef.createAppenderRef(CONSOLE_APPENDER, Level.ALL, null);
 //
-//        LoggerConfig loggerConfig = LoggerConfig.createLogger("false", Level.ALL, LogManager.ROOT_LOGGER_NAME,
-//            "true", refs, null, cfg, null);
+//        LoggerConfig newLogCfg = LoggerConfig.createLogger("false", oldLogCfg.getLevel(),
+//            oldLogCfg.getName(), "true", new AppenderRef[]{ref}, null, cfg, null);
 //
-//        loggerConfig.addAppender(console, null, null);
+//        newLogCfg.addAppender(appender, Level.ALL, null);
 //
-//        cfg.addLogger("org.apache.logging.log4j", loggerConfig);
+//        cfg.addLogger(logger.getName(), oldLogCfg);
 //
+//        ctx.reconfigure();
 //        ctx.updateLoggers();
+//    }
+
+    /**
+     * Creates console appender with some reasonable default logging settings.
+     *
+     * @param maxLevel Max logging level.
+     * @return New console appender.
+     */
+    // TODO review.
+//    private void createConsoleLogger(Logger log, Level maxLevel) {
+//        ConsoleAppender consoleApp = ConsoleAppender.createAppender(PatternLayout.createDefaultLayout(), null,
+//            "SYSTEM_OUT", CONSOLE_APPENDER, null, null);
+//
+//        final LoggerContext ctx = log.getContext();
+//
+//        final Configuration cfg = ctx.getConfiguration();
+//
+//        consoleApp.start();
+//
+//        cfg.addAppender(consoleApp);
+//
+//        AppenderRef ref = AppenderRef.createAppenderRef(CONSOLE_APPENDER, null, null);
+//
+//        LoggerConfig logCfg = LoggerConfig.createLogger("true", null, log.getName(),
+//            "true", new AppenderRef[] {ref}, null, cfg, null);
+//
+//        logCfg.getAppenderRefs().add(ref);
 //
-//        ctx.getLogger("console").error("");
+//        cfg.addLogger(log.getName(), logCfg);
 //
-//        return console;
+//        ctx.updateLoggers();
+//
+//        return consoleApp;
 //    }
+    /**
+     * Creates console appender with some reasonable default logging settings.
+     *
+     * @param maxLevel Max logging level.
+     * @return New console appender.
+     */
+    // TODO review.
+    private Logger createConsoleLogger(Logger log, Level maxLevel) {
+        LoggerContext context= (LoggerContext) LogManager.getContext();
+        Configuration config= context.getConfiguration();
+
+        PatternLayout layout= PatternLayout.createLayout("[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n", null, null, Charset.defaultCharset(),false,false,null,null);
+        Appender appender=ConsoleAppender.createAppender(layout, null, null, "CONSOLE_APPENDER", null, null);
+        appender.start();
+        AppenderRef ref= AppenderRef.createAppenderRef("CONSOLE_APPENDER",null,null);
+        AppenderRef[] refs = new AppenderRef[] {ref};
+        LoggerConfig loggerConfig= LoggerConfig.createLogger("false", Level.INFO,"CONSOLE_LOGGER","CONSOLE_LOGGER",refs,null,null,null);
+        loggerConfig.addAppender(appender,null,null);
+
+        config.addAppender(appender);
+        config.addLogger("CONSOLE_LOGGER", loggerConfig);
+        context.updateLoggers(config);
+
+        return  (Logger)LogManager.getContext().getLogger("CONSOLE_LOGGER");
+    }
 
     /** {@inheritDoc} */
     @Override public void setNodeId(UUID nodeId) {
@@ -404,12 +450,12 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
      */
     @Override public Log4J2Logger getLogger(Object ctgr) {
         if (ctgr == null)
-            return new Log4J2Logger((Logger)LogManager.getRootLogger());
+            return new Log4J2Logger((Logger)LogManager.getRootLogger(), (Logger)LogManager.getContext().getLogger("CONSOLE_LOGGER"));
 
         if (ctgr instanceof Class)
-            return new Log4J2Logger((Logger)LogManager.getLogger(((Class<?>)ctgr).getName()));
+            return new Log4J2Logger((Logger)LogManager.getLogger(((Class<?>)ctgr).getName()), (Logger)LogManager.getContext().getLogger("CONSOLE_LOGGER"));
 
-        return new Log4J2Logger((Logger)LogManager.getLogger(ctgr.toString()));
+        return new Log4J2Logger((Logger)LogManager.getLogger(ctgr.toString()), (Logger)LogManager.getContext().getLogger("CONSOLE_LOGGER"));
     }
 
     /** {@inheritDoc} */
@@ -418,6 +464,8 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
             warning("Logging at TRACE level without checking if TRACE level is enabled: " + msg);
 
         impl.trace(msg);
+
+        if (consoleLogger != null) consoleLogger.trace(msg);
     }
 
     /** {@inheritDoc} */
@@ -426,6 +474,7 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
             warning("Logging at DEBUG level without checking if DEBUG level is enabled: " + msg);
 
         impl.debug(msg);
+        if (consoleLogger != null) consoleLogger.debug(msg);
     }
 
     /** {@inheritDoc} */
@@ -434,26 +483,32 @@ public class Log4J2Logger implements IgniteLogger, LoggerNodeIdAware {
             warning("Logging at INFO level without checking if INFO level is enabled: " + msg);
 
         impl.info(msg);
+
+        if (consoleLogger != null) consoleLogger.info(msg);
     }
 
     /** {@inheritDoc} */
     @Override public void warning(String msg) {
         impl.warn(msg);
+        if (LogManager.getContext().getLogger("CONSOLE_LOGGER") != null) LogManager.getContext().getLogger("CONSOLE_LOGGER").warn(msg);
     }
 
     /** {@inheritDoc} */
     @Override public void warning(String msg, @Nullable Throwable e) {
         impl.warn(msg, e);
+        if (consoleLogger != null) consoleLogger.warn(msg, e);
     }
 
     /** {@inheritDoc} */
     @Override public void error(String msg) {
         impl.error(msg);
+        if (consoleLogger != null) consoleLogger.error(msg);
     }
 
     /** {@inheritDoc} */
     @Override public void error(String msg, @Nullable Throwable e) {
         impl.error(msg, e);
+        if (consoleLogger != null) consoleLogger.error(msg, e);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53b4e2a7/modules/log4j2/src/test/java/org/apache/ignite/logger/log4j2/GridLog4j2SelfTest.java
----------------------------------------------------------------------
diff --git a/modules/log4j2/src/test/java/org/apache/ignite/logger/log4j2/GridLog4j2SelfTest.java b/modules/log4j2/src/test/java/org/apache/ignite/logger/log4j2/GridLog4j2SelfTest.java
index ba3f37b..3b07fa9 100644
--- a/modules/log4j2/src/test/java/org/apache/ignite/logger/log4j2/GridLog4j2SelfTest.java
+++ b/modules/log4j2/src/test/java/org/apache/ignite/logger/log4j2/GridLog4j2SelfTest.java
@@ -23,14 +23,14 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.logger.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
 import org.apache.ignite.testframework.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 import java.io.*;
 import java.util.*;
 
-import static org.apache.ignite.IgniteSystemProperties.*;
-
 /**
  * Grid Log4j2 SPI test.
  */
@@ -40,6 +40,9 @@ public class GridLog4j2SelfTest extends TestCase {
     public static final String LOG_PATH_TEST = "modules/core/src/test/config/log4j2-test.xml";
 
     /** */
+    public static final String LOG_PATH_VERBOSE_TEST = "modules/core/src/test/config/log4j2-verbose-test.xml";
+
+    /** */
     public static final String LOG_PATH_MAIN = "config/ignite-log4j2.xml";
 
     /**
@@ -115,19 +118,45 @@ public class GridLog4j2SelfTest extends TestCase {
      * @throws Exception If failed.
      */
     public void testVerboseMode() throws Exception {
-        System.setProperty(IGNITE_QUIET, "false");
-
-//        try (Ignite ignite = G.start(getConfiguration("grid" + id))) {
-//            id8 = U.id8(ignite.cluster().localNode().id());
-//
-//            String logPath = "work/log/ignite-" + id8 + ".log";
-//
-//            logFile = U.resolveIgnitePath(logPath);
-//            assertNotNull("Failed to resolve path: " + logPath, logFile);
-//            assertTrue("Log file does not exist: " + logFile, logFile.exists());
-//
-//            assertEquals(logFile.getAbsolutePath(), ignite.log().fileName());
-//        }
+        final PrintStream backupSysOut = System.out;
+        final ByteArrayOutputStream testOut = new ByteArrayOutputStream();
+
+        try {
+            // Redirect the default output to a stream.
+            System.setOut(new PrintStream(testOut));
+
+            System.setProperty("IGNITE_QUIET", "false");
+
+            TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+            disco.setIpFinder(new TcpDiscoveryVmIpFinder(false) {{
+                setAddresses(Collections.singleton("127.0.0.1:47500..47509"));
+            }});
+
+            IgniteConfiguration cfg = new IgniteConfiguration()
+                .setGridLogger(new Log4J2Logger(LOG_PATH_VERBOSE_TEST))
+                .setConnectorConfiguration(null)
+                .setDiscoverySpi(disco);
+
+            try (Ignite ignite = G.start(cfg)) {
+                String testInfoMsg = "******* Hello Tester! INFO message *******";
+                String testDebugMsg = "******* Hello Tester! DEBUG message *******";
+
+                ignite.log().info(testInfoMsg);
+                ignite.log().debug(testDebugMsg);
+
+                String consoleOut = testOut.toString();
+
+                assertTrue(consoleOut.contains(testInfoMsg));
+                assertTrue(consoleOut.contains(testDebugMsg));
+            }
+        }
+        finally {
+            // Restore the stdout and write the String to stdout.
+            System.setOut(backupSysOut);
+
+            System.out.println(testOut.toString());
+        }
     }
 
     /**