/** Initializes the logging infrastructure */
void initLogger( ConfigManager & conf ) {
	Logger *l = Logger::getLogger();
	Logger::eLogLevel loglevel = Logger::LOGLEVEL_INFO;
	int confLoglevel = conf.getIntValue("main.logging.loglevel", 1 );
	switch( confLoglevel ) {
	case 0:
		loglevel = Logger::LOGLEVEL_ERROR;	break;
	case 1:
		loglevel = Logger::LOGLEVEL_WARN;	break;
	case 2:
		loglevel = Logger::LOGLEVEL_INFO;	break;
	case 3:
		loglevel = Logger::LOGLEVEL_DEBUG;	break;
	case 4:
		loglevel = Logger::LOGLEVEL_TRACE;	break;
	}
	bool enableConsoleLogging = conf.getBoolValue("main.logging.enableConsole", true );
	bool enableFileLogging = conf.getBoolValue("main.logging.enableLogfiles", false );
	bool enableLogfileAppend = conf.getBoolValue("main.logging.enableFileAppend", false );

	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("general.log", enableLogfileAppend );
	Logger::enableFileLogging( enableFileLogging );
	Logger::enableConsoleLogging( enableConsoleLogging );

	l = Logger::getLogger(QString("DISCOVERY"));
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("Discovery.log", enableLogfileAppend);

	l = Logger::getLogger(QString("XML"));
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("XML.log", enableLogfileAppend);

	l = Logger::getLogger(QString("USBQUERY"));
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USBquery.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_default.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn0");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_0.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn1");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_1.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn2");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_2.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn3");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_3.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn4");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_4.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn5");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_5.log", enableLogfileAppend);

	l = Logger::getLogger("USBConn6");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("USB_6.log", enableLogfileAppend);

	l = Logger::getLogger("HUB0");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_0.log", enableLogfileAppend);

	l = Logger::getLogger("HUB1");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_1.log", enableLogfileAppend);

	l = Logger::getLogger("HUB2");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_2.log", enableLogfileAppend);

	l = Logger::getLogger("HUB3");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_3.log", enableLogfileAppend);

	l = Logger::getLogger("HUB4");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_4.log", enableLogfileAppend);

	l = Logger::getLogger("HUB5");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("HUB_5.log", enableLogfileAppend);

	l = Logger::getLogger("VHCI");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("VHCI.log", enableLogfileAppend);

	l = Logger::getLogger("TEST");
	l->setLogLevel( loglevel );
	l->addConsoleAppender();
	l->addFileAppender("Test.log", enableLogfileAppend);
}