version 0.3.29
[fms.git] / src / fmsapp.cpp
index 261ea46..2daf6c8 100644 (file)
@@ -108,8 +108,23 @@ void FMSApp::initialize(Poco::Util::Application &self)
        }\r
        int rval=chdir(m_workingdirectory.c_str());\r
 \r
-       SetupDB();\r
-       SetupDefaultOptions();\r
+#ifdef QUERY_LOG\r
+       {\r
+               Poco::AutoPtr<Poco::FormattingChannel> formatter=new Poco::FormattingChannel(new Poco::PatternFormatter("%Y-%m-%d %H:%M:%S | %t"));\r
+               Poco::AutoPtr<Poco::FileChannel> fc=new Poco::FileChannel("query.log");\r
+               fc->setProperty("rotation","daily");\r
+               fc->setProperty("times","utc");\r
+               fc->setProperty("archive","timestamp");\r
+               fc->setProperty("purgeCount","5");\r
+               fc->setProperty("compress","true");\r
+               formatter->setChannel(fc);\r
+               Poco::Logger::create("querylog",formatter,Poco::Message::PRIO_INFORMATION);\r
+       }\r
+#endif\r
+\r
+       LoadDatabase();\r
+       SetupDB(m_db);\r
+       SetupDefaultOptions(m_db);\r
        initializeLogger();\r
        config().setString("application.logger","logfile");\r
 }\r
@@ -119,7 +134,9 @@ void FMSApp::initializeLogger()
        int initiallevel=Poco::Message::PRIO_TRACE;\r
 \r
        std::string tempval="";\r
-       if(Option::Instance()->Get("LogLevel",tempval))\r
+       Option option(m_db);\r
+\r
+       if(option.Get("LogLevel",tempval))\r
        {\r
                StringFunctions::Convert(tempval,initiallevel);\r
        }\r
@@ -153,6 +170,7 @@ void FMSApp::initializeLogger()
        setLogger(Poco::Logger::create("logfile",formatter,Poco::Message::PRIO_INFORMATION));\r
        Poco::Logger::get("logfile").information("LogLevel set to "+tempval);\r
        Poco::Logger::get("logfile").setLevel(initiallevel);\r
+\r
 }\r
 \r
 int FMSApp::main(const std::vector<std::string> &args)\r
@@ -162,7 +180,7 @@ int FMSApp::main(const std::vector<std::string> &args)
        // so we need to set the working directory again\r
        int rval=chdir(m_workingdirectory.c_str());\r
 \r
-       if(VerifyDB()==false)\r
+       if(VerifyDB(m_db)==false)\r
        {\r
                std::cout << "The FMS database failed verification.  It is most likely corrupt!" << std::endl;\r
                logger().fatal("The FMS database failed verification.  It is most likely corrupt!");\r
@@ -183,12 +201,13 @@ int FMSApp::main(const std::vector<std::string> &args)
                logger().information("FMS startup v"FMS_VERSION);\r
                logger().information("Using SQLite "SQLITE_VERSION);\r
 \r
-               std::string tempval="";\r
-               Option::Instance()->Get("VacuumOnStartup",tempval);\r
+               std::string tempval("");\r
+               Option option(m_db);\r
+               option.Get("VacuumOnStartup",tempval);\r
                if(tempval=="true")\r
                {\r
                        logger().information("VACUUMing database");\r
-                       SQLite3DB::DB::Instance()->Execute("VACUUM;");\r
+                       m_db->Execute("VACUUM;");\r
                }\r
 \r
                StartThreads();\r
@@ -220,10 +239,11 @@ void FMSApp::setOptions()
 {\r
        for(std::map<std::string,std::string>::iterator i=m_setoptions.begin(); i!=m_setoptions.end(); i++)\r
        {\r
-               std::string tempval="";\r
-               if(Option::Instance()->Get((*i).first,tempval))\r
+               std::string tempval("");\r
+               Option option(m_db);\r
+               if(option.Get((*i).first,tempval))\r
                {\r
-                       Option::Instance()->Set((*i).first,(*i).second);\r
+                       option.Set((*i).first,(*i).second);\r
                        std::cout << "Option " << (*i).first << " set to " << (*i).second << std::endl;\r
                }\r
                else\r
@@ -235,7 +255,7 @@ void FMSApp::setOptions()
 \r
 void FMSApp::showOptions()\r
 {\r
-       SQLite3DB::Statement st=SQLite3DB::DB::Instance()->Prepare("SELECT Option, OptionValue FROM tblOption;");\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT Option, OptionValue FROM tblOption;");\r
        st.Step();\r
        while(st.RowReturned())\r
        {\r
@@ -252,13 +272,14 @@ void FMSApp::showOptions()
 \r
 void FMSApp::StartThreads()\r
 {\r
-       std::string tempval="";\r
+       std::string tempval("");\r
+       Option option(m_db);\r
 \r
        // always start the DB maintenance thread\r
        logger().trace("FMSApp::StartThreads starting DBMaintenanceThread");\r
        m_threads.Start(new DBMaintenanceThread());\r
 \r
-       Option::Instance()->Get("StartHTTP",tempval);\r
+       option.Get("StartHTTP",tempval);\r
        if(tempval=="true")\r
        {\r
                logger().trace("FMSApp::StartThreads starting HTTPThread");\r
@@ -274,7 +295,7 @@ void FMSApp::StartThreads()
        }\r
 \r
        tempval="";\r
-       Option::Instance()->Get("StartNNTP",tempval);\r
+       option.Get("StartNNTP",tempval);\r
        if(tempval=="true")\r
        {\r
                logger().trace("FMSApp::StartThreads starting NNTPListener");\r
@@ -290,7 +311,7 @@ void FMSApp::StartThreads()
        }\r
 \r
        tempval="";\r
-       Option::Instance()->Get("StartFreenetUpdater",tempval);\r
+       option.Get("StartFreenetUpdater",tempval);\r
        if(tempval=="true")\r
        {\r
                logger().trace("FMSApp::StartThreads starting FreenetMasterThread");\r