Map irrlicht log level to minetest. Allow write them to debug file.
authorRealBadAngel <maciej.kasatkin@o2.pl>
Wed, 7 May 2014 22:58:00 +0000 (00:58 +0200)
committersapier <Sapier at GMX dot net>
Wed, 14 May 2014 17:30:39 +0000 (19:30 +0200)
src/main.cpp

index 08e8c1ee255788054f3a5d42663ab3054e05cc3a..0531a8540e0fe9563132b8cdef0facd40ab5e3eb 100644 (file)
@@ -304,6 +304,11 @@ public:
                                }
                        }
                }
+               if(event.EventType == irr::EET_LOG_TEXT_EVENT)
+               {
+                       dstream<<"Irrlicht log: "<<event.LogEvent.Text<<std::endl;
+                       return true;
+               }
                /* always return false in order to continue processing events */
                return false;
        }
@@ -775,6 +780,8 @@ int main(int argc, char *argv[])
                        _("Set world path (implies local game) ('list' lists all)"))));
        allowed_options.insert(std::make_pair("worldname", ValueSpec(VALUETYPE_STRING,
                        _("Set world by name (implies local game)"))));
+       allowed_options.insert(std::make_pair("quiet", ValueSpec(VALUETYPE_FLAG,
+                       _("Print to console errors only"))));
        allowed_options.insert(std::make_pair("info", ValueSpec(VALUETYPE_FLAG,
                        _("Print more information to console"))));
        allowed_options.insert(std::make_pair("verbose",  ValueSpec(VALUETYPE_FLAG,
@@ -848,7 +855,12 @@ int main(int argc, char *argv[])
        /*
                Low-level initialization
        */
-
+       
+       // Quiet mode, print errors only
+       if(cmd_args.getFlag("quiet")){
+               log_remove_output(&main_stderr_log_out);
+               log_add_output_maxlev(&main_stderr_log_out, LMT_ERROR);
+       }
        // If trace is enabled, enable logging of certain things
        if(cmd_args.getFlag("trace")){
                dstream<<_("Enabling trace level debug output")<<std::endl;
@@ -1450,6 +1462,23 @@ int main(int argc, char *argv[])
        if (device == 0) {
                return 1; // could not create selected driver.
        }
+
+       // Map our log level to irrlicht engine one.
+       static const irr::ELOG_LEVEL irr_log_level[5] = {
+               ELL_NONE,
+               ELL_ERROR,
+               ELL_WARNING,
+               ELL_INFORMATION,
+#if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8)        
+               ELL_INFORMATION
+#else
+               ELL_DEBUG
+#endif
+       };
+       
+       ILogger* irr_logger = device->getLogger();
+       irr_logger->setLogLevel(irr_log_level[loglevel]);
+        
        porting::initIrrlicht(device);
 
        /*