diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-16 17:04:55 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-11-16 17:04:55 +0100 |
commit | 473ed1c34b98b0515031eef9bfd3a140d8bb2c92 (patch) | |
tree | 8eda4f2c25e202f333e809b3c252b08c7a0c6415 /src | |
parent | f8c20e22c8919dc1651af5c51cb5a6cf2a26481c (diff) | |
download | abrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.tar.gz abrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.tar.xz abrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.zip |
add experimental saving of /var/log/Xorg*.log for X crashes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/Daemon/MiddleWare.cpp | 23 | ||||
-rw-r--r-- | src/Daemon/PluginManager.cpp | 27 | ||||
-rw-r--r-- | src/Daemon/Settings.cpp | 1 | ||||
-rw-r--r-- | src/Daemon/abrt.conf | 7 |
4 files changed, 30 insertions, 28 deletions
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp index 0bc358e1..dc5a295a 100644 --- a/src/Daemon/MiddleWare.cpp +++ b/src/Daemon/MiddleWare.cpp @@ -278,17 +278,21 @@ void RunActionsAndReporters(const char *pDebugDumpDir) { try { - if (g_pPluginManager->GetPluginType(it_ar->first) == REPORTER) + VERB3 log("RunActionsAndReporters: checking %s", it_ar->first.c_str()); + plugin_type_t tp = g_pPluginManager->GetPluginType(it_ar->first); + if (tp == REPORTER) { CReporter* reporter = g_pPluginManager->GetReporter(it_ar->first); map_crash_report_t crashReport; DebugDumpToCrashReport(pDebugDumpDir, crashReport); + VERB2 log("%s.Report(...)", it_ar->first.c_str()); reporter->Report(crashReport, plugin_settings, it_ar->second); } - else if (g_pPluginManager->GetPluginType(it_ar->first) == ACTION) + else if (tp == ACTION) { CAction* action = g_pPluginManager->GetAction(it_ar->first); + VERB2 log("%s.Run('%s','%s')", it_ar->first.c_str(), pDebugDumpDir, it_ar->second.c_str()); action->Run(pDebugDumpDir, it_ar->second.c_str()); } } @@ -375,18 +379,22 @@ report_status_t Report(const map_crash_report_t& pCrashReport, } } - // analyzer with package name (CCpp:xrog-x11-app) has higher priority + // analyzer with package name (CCpp:xorg-x11-app) has higher priority std::string key = analyzer + ":" + packageName; + map_analyzer_actions_and_reporters_t::iterator end = s_mapAnalyzerActionsAndReporters.end(); map_analyzer_actions_and_reporters_t::iterator keyPtr = s_mapAnalyzerActionsAndReporters.find(key); - if (keyPtr == s_mapAnalyzerActionsAndReporters.end()) + if (keyPtr == end) { // if there is no such settings, then try default analyzer keyPtr = s_mapAnalyzerActionsAndReporters.find(analyzer); + key = analyzer; } std::string message; - if (keyPtr != s_mapAnalyzerActionsAndReporters.end()) + if (keyPtr != end) { + VERB2 log("Found AnalyzerActionsAndReporters for '%s'", key.c_str()); + vector_pair_string_string_t::iterator it_r = keyPtr->second.begin(); for (; it_r != keyPtr->second.end(); it_r++) { @@ -433,7 +441,7 @@ report_status_t Report(const map_crash_report_t& pCrashReport, { ret[pluginName].push_back("0"); ret[pluginName].push_back(e.what()); - update_client("Reporting via %s' was not successful: %s", pluginName.c_str(), e.what()); + update_client("Reporting via '%s' was not successful: %s", pluginName.c_str(), e.what()); } } } @@ -764,7 +772,7 @@ vector_pair_string_string_t GetUUIDsOfCrash(const char *pUID) database->DisConnect(); vector_pair_string_string_t UUIDsUIDs; - int ii; + unsigned ii; for (ii = 0; ii < rows.size(); ii++) { UUIDsUIDs.push_back(make_pair(rows[ii].m_sUUID, rows[ii].m_sUID)); @@ -783,5 +791,6 @@ void AddAnalyzerActionOrReporter(const char *pAnalyzer, void AddActionOrReporter(const char *pActionOrReporter, const char *pArgs) { + VERB3 log("AddActionOrReporter('%s','%s')", pActionOrReporter, pArgs); s_vectorActionsAndReporters.push_back(make_pair(std::string(pActionOrReporter), std::string(pArgs))); } diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp index 5b871515..21a66adf 100644 --- a/src/Daemon/PluginManager.cpp +++ b/src/Daemon/PluginManager.cpp @@ -278,13 +278,11 @@ CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName) map_plugins_t::iterator plugin = m_mapPlugins.find(pName); if (plugin == m_mapPlugins.end()) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():" - "Analyzer plugin: '"+pName+"' is not registered."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered"); } if (m_mapABRTPlugins[pName]->GetType() != ANALYZER) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():" - "Plugin: '"+pName+"' is not analyzer plugin."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not an analyzer plugin"); } return (CAnalyzer*)(plugin->second); } @@ -294,13 +292,11 @@ CReporter* CPluginManager::GetReporter(const std::string& pName) map_plugins_t::iterator plugin = m_mapPlugins.find(pName); if (plugin == m_mapPlugins.end()) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():" - "Reporter plugin: '"+pName+"' is not registered."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered"); } if (m_mapABRTPlugins[pName]->GetType() != REPORTER) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():" - "Plugin: '"+pName+"' is not reporter plugin."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not a reporter plugin"); } return (CReporter*)(plugin->second); } @@ -310,13 +306,11 @@ CAction* CPluginManager::GetAction(const std::string& pName) map_plugins_t::iterator plugin = m_mapPlugins.find(pName); if (plugin == m_mapPlugins.end()) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():" - "Action plugin: '"+pName+"' is not registered."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered"); } if (m_mapABRTPlugins[pName]->GetType() != ACTION) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():" - "Plugin: '"+pName+"' is not action plugin."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not an action plugin"); } return (CAction*)(plugin->second); } @@ -326,13 +320,11 @@ CDatabase* CPluginManager::GetDatabase(const std::string& pName) map_plugins_t::iterator plugin = m_mapPlugins.find(pName); if (plugin == m_mapPlugins.end()) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():" - "Database plugin: '"+pName+"' is not registered."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered"); } if (m_mapABRTPlugins[pName]->GetType() != DATABASE) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():" - "Plugin: '"+pName+"' is not database plugin."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not a database plugin"); } return (CDatabase*)(plugin->second); } @@ -342,8 +334,7 @@ plugin_type_t CPluginManager::GetPluginType(const std::string& pName) map_plugins_t::iterator plugin = m_mapPlugins.find(pName); if (plugin == m_mapPlugins.end()) { - throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetPluginType():" - "Plugin: '"+pName+"' is not registered."); + throw CABRTException(EXCEP_PLUGIN, "Plugin '"+pName+"' is not registered"); } return m_mapABRTPlugins[pName]->GetType(); } diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp index cefd35a4..7f419ec5 100644 --- a/src/Daemon/Settings.cpp +++ b/src/Daemon/Settings.cpp @@ -228,6 +228,7 @@ static void ParseAnalyzerActionsAndReporters() set_string_t::iterator it_keys = keys.begin(); for (; it_keys != keys.end(); it_keys++) { + VERB2 log("AnalyzerActionsAndReporters['%s']=...", it_keys->c_str()); g_settings_mapAnalyzerActionsAndReporters[*it_keys] = actionsAndReporters; } } diff --git a/src/Daemon/abrt.conf b/src/Daemon/abrt.conf index e9845e58..f24ec4a8 100644 --- a/src/Daemon/abrt.conf +++ b/src/Daemon/abrt.conf @@ -10,20 +10,21 @@ OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora # Blacklisted packages BlackList = nspluginwrapper # Enabled plugins. There has to be exactly one database plugin -EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python +EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python, RunApp # Database Database = SQLite3 # Max size for crash storage [MiB] MaxCrashReportsSize = 1000 # Vector of actions and reporters which are activated immediately after a crash occurs -# ActionsAndReporters = Mailx("[abrt] new crash was detected") +#ActionsAndReporters = Mailx("[abrt] new crash was detected") +# TODO: teach parser to escape \". Should be: x"`cat component`" = x"xorg-x11-server-Xorg" +ActionsAndReporters = RunApp("test x`cat component` = xxorg-x11-server-Xorg && cp /var/log/Xorg*.log .") # Reporters association with analyzers [ AnalyzerActionsAndReporters ] Kerneloops = KerneloopsReporter CCpp = Bugzilla, Logger Python = Bugzilla, Logger -# CCpp : xorg-x11-apps = RunApp("date", "RunApp") # Repeated calling of Action plugins [ Cron ] |