summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Schucha <alex@hts-software.de>2021-09-07 10:41:04 +0200
committerAlexander Schucha <alex@hts-software.de>2021-09-07 12:24:15 +0200
commit08c7c6323ef66576d118f9fd5f68c1da8c99dd32 (patch)
tree5c92f591dc1dc500786ac7fc1c44443d8c7a9459
parent25bc6243f81a80d9c4537f3e65d7d060aee80f35 (diff)
parent757c1f85571c8ec6b214df1e11905d3a341ce5c7 (diff)
Merge branch 'master' of ssh://git.hts-software.de/home/git.hts-software.de/git/projekt/Athena-Web
Umstelleung auf die neue Athena-Api/Log Klasse Zum Commit vorgemerkte Änderungen: geändert: ExecXmlBauplan/ExecXmlBauplan.cpp geändert: ExecXmlBauplan/ExecXmlBauplan.hpp geändert: ExecXmlBauplan/eventExecBauplan.hpp geändert: ExecXmlBauplan/eventInsert.hpp geändert: HtsWebGen.cpp geändert: HtsWebGen.hpp
-rw-r--r--HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.cpp8
-rw-r--r--HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.hpp18
-rw-r--r--HtsWebGen/src/ExecXmlBauplan/eventExecBauplan.hpp17
-rw-r--r--HtsWebGen/src/ExecXmlBauplan/eventInsert.hpp16
-rw-r--r--HtsWebGen/src/HtsWebGen.cpp154
-rw-r--r--HtsWebGen/src/HtsWebGen.hpp3
6 files changed, 162 insertions, 54 deletions
diff --git a/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.cpp b/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.cpp
index fea1eaa..4de571e 100644
--- a/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.cpp
+++ b/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.cpp
@@ -47,18 +47,20 @@ namespace Hts
//
ExecXmlBauplan::ExecXmlBauplan (std::string strSeitenbauplan,
const std::map<std::string, std::string>& mapParameter,
- HtsSaveDb* pSeitenDb) : pIntSeitenDb (pSeitenDb)
+ HtsSaveDb* pSeitenDb,
+ Hts::Log* pLog) : pIntSeitenDb (pSeitenDb), pIntLog (pLog), objIntEventInsert (pIntLog), objIntEventExecBauplan (pIntLog)
{
syslog (LOG_INFO, "ExecXmlBauplan::ExecXmlBauplan ()");
// Instanzen der benötigten Objekte erzeugen.
- pIntXmlBauplan = new Hts::Xml (strSeitenbauplan, &xmlEvents);
- pIntXmlNeueSeite = new Hts::Xml ();
+ pIntXmlBauplan = new Hts::Xml (strSeitenbauplan, &xmlEvents, pIntLog);
+ pIntXmlNeueSeite = new Hts::Xml (pIntLog);
// Übergebe das Datenbank und XML-Objekts an die Event-Objekte.
objIntEventHtmlTemplate.setSeitenDb (pIntSeitenDb);
objIntEventHtmlTemplate.setXmlNeueSeite (pIntXmlNeueSeite);
+ objIntEventInsert = eventInsert (pIntLog);
objIntEventInsert.setSeitenDb (pIntSeitenDb);
objIntEventInsert.setXmlNeueSeite (pIntXmlNeueSeite);
objIntEventInsert.setParameter (mapParameter);
diff --git a/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.hpp b/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.hpp
index a51e090..9821c24 100644
--- a/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.hpp
+++ b/HtsWebGen/src/ExecXmlBauplan/ExecXmlBauplan.hpp
@@ -23,15 +23,21 @@
#ifndef ExecXmlBauplan_HPP
#define ExecXmlBauplan_HPP
-#include "../../../../Athena-Api/HtsSaveDb/HtsSaveDb.hpp"
-#include "../../../../Athena-Api/HtsSaveDb/HtsSaveDb.cpp"
-
+// C++
#include <vector>
#include <map>
+// Linux
#include <cstdlib>
#include <dlfcn.h> //dlopen - Linux manuelles laden der Bibliothken
+// Eigene
+#include "../../../../Athena-Api/HtsSaveDb/HtsSaveDb.hpp"
+#include "../../../../Athena-Api/HtsSaveDb/HtsSaveDb.cpp"
+
+#include "../../../../Athena-Api/Xml/Xml.hpp"
+#include "../../../../Athena-Api/Xml/Xml.cpp"
+
namespace Hts
{
@@ -50,7 +56,8 @@ public:
// Konstruktor dem als Parameter der XML-Bauplan der Seite übergeben wird.
ExecXmlBauplan (std::string strSeitenbauplan,
const std::map<std::string, std::string>& mapParameter,
- HtsSaveDb* pSeitenDb);
+ HtsSaveDb* pSeitenDb,
+ Hts::Log* pLog = nullptr);
// Destructor
~ExecXmlBauplan ();
@@ -62,6 +69,9 @@ public:
//*** Definition der privaten Objekte/Methoden ***
//*****************************************************************************
private:
+// Pointer auf das Logging Objekt speichern.
+ Hts::Log* pIntLog;
+
// Erzeuge die Objekte zur Event Behandlung.
eventHtmlTemplate objIntEventHtmlTemplate;
eventInsert objIntEventInsert;
diff --git a/HtsWebGen/src/ExecXmlBauplan/eventExecBauplan.hpp b/HtsWebGen/src/ExecXmlBauplan/eventExecBauplan.hpp
index 244dbd9..9dc176b 100644
--- a/HtsWebGen/src/ExecXmlBauplan/eventExecBauplan.hpp
+++ b/HtsWebGen/src/ExecXmlBauplan/eventExecBauplan.hpp
@@ -18,11 +18,23 @@
//
// Dieses Event verarbeitet das <execBauplan> Tag aus dem Seitenbauplan
-// (Es werden das Ergebnis eines anderen Bauplans eingefügt.)
+// (Es wird das Ergebnis eines anderen Bauplans eingefügt.)
//
+
+// Eigene
+#include "../../../../Athena-Api/Log/Log.hpp"
+#include "../../../../Athena-Api/Log/LogStdout.hpp"
+#include "../../../../Athena-Api/Log/LogSyslog.hpp"
+#include "../../../../Athena-Api/Log/LogFile.hpp"
+#include "../../../../Athena-Api/Log/LogNoLog.hpp"
+
class eventExecBauplan : public Hts::Xml::xmlEventTyp
{
public:
+ eventExecBauplan (Hts::Log* pLog) : pIntLog (pLog)
+ {
+ }
+
void setSeitenDb (HtsSaveDb* pSeitenDb)
{
pIntSeitenDb = pSeitenDb;
@@ -39,6 +51,9 @@ public:
}
private:
+// Pointer auf das Logging Objekt speichern.
+ Hts::Log* pIntLog;
+
HtsSaveDb* pIntSeitenDb;
Hts::Xml* pIntXmlNeueSeite;
};
diff --git a/HtsWebGen/src/ExecXmlBauplan/eventInsert.hpp b/HtsWebGen/src/ExecXmlBauplan/eventInsert.hpp
index 10c89ce..3022741 100644
--- a/HtsWebGen/src/ExecXmlBauplan/eventInsert.hpp
+++ b/HtsWebGen/src/ExecXmlBauplan/eventInsert.hpp
@@ -27,9 +27,20 @@
// namen enthalten und bei einem id-Tag das wie ein Variablennamen
// lautet.
+// Eigene
+#include "../../../../Athena-Api/Log/Log.hpp"
+#include "../../../../Athena-Api/Log/LogStdout.hpp"
+#include "../../../../Athena-Api/Log/LogSyslog.hpp"
+#include "../../../../Athena-Api/Log/LogFile.hpp"
+#include "../../../../Athena-Api/Log/LogNoLog.hpp"
+
class eventInsert : public Hts::Xml::xmlEventTyp
{
public:
+ eventInsert (Hts::Log* pLog) : pIntLog (pLog)
+ {
+ }
+
void setSeitenDb (HtsSaveDb* pSeitenDb)
{
pIntSeitenDb = pSeitenDb;
@@ -79,7 +90,7 @@ public:
}
// Füge den Variableninhalt in HTML-Tags die als id Tag den Variblennamen haben
- Hts::Xml xmlSeitenElement (strElementAufbau);
+ Hts::Xml xmlSeitenElement (strElementAufbau, nullptr, pIntLog);
for (itVecValues = vecValues.begin (); itVecValues < vecValues.end (); itVecValues++)
{
@@ -128,6 +139,9 @@ public:
}
private:
+// Pointer auf das Logging Objekt speichern.
+ Hts::Log* pIntLog;
+
HtsSaveDb* pIntSeitenDb;
Hts::Xml* pIntXmlNeueSeite;
std::map<std::string, std::string> m_mapParameter;
diff --git a/HtsWebGen/src/HtsWebGen.cpp b/HtsWebGen/src/HtsWebGen.cpp
index 8a84378..4fc53cd 100644
--- a/HtsWebGen/src/HtsWebGen.cpp
+++ b/HtsWebGen/src/HtsWebGen.cpp
@@ -56,8 +56,29 @@
int main (int argC, char *argV[])
{
-// Debugmeldung App gestartet.
- syslog (LOG_INFO, "***** Programm gestartet *****");
+//*****
+//* Eine Instanz der Log-Klasse erzeugen.
+//* Je nach erzeugter Instanz wird an verschiedene Ziele (Stdout, File, Syslog, NoLog) geloggt.
+//*
+// Logging für das gewünschte Log-Ziel aktivieren.
+ Hts::Log* pLog;
+ //pLog = Hts::LogStdout::getInstance ();
+ //pLog = Hts::LogFile::getInstance ();
+ pLog = Hts::LogSyslog::getInstance ();
+ //pLog = Hts::LogNoLog::getInstance ();
+
+// LogStatus gibt an welche Loglevel ausgegeben werden. Als Standard ist "Info" ein guter Wert.
+// Hier sollten Meldungen ausgegeben werden die den User auf Probleme Hinweisen und Lösungen vorschlagen.
+ pLog->setLogStatus ("Info Error");
+
+// Für die Entwicklung alle Ausgaben einschalten.
+ //pLog->setLogStatus ("on");
+//*
+//*****
+
+// Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main ***** Programm gestartet *****");
// Kommandozeilenparameter aufbereiten.
int boolKommandozeile = false;
@@ -68,7 +89,10 @@ int main (int argC, char *argV[])
if (boolKommandozeile)
{
strKmCgiDaten = argV[1];
- syslog (LOG_INFO, "strKmCgiDaten: '%s'", strKmCgiDaten.c_str ());
+
+ // Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - strKmCgiDaten: " + strKmCgiDaten);
}
//*******
@@ -79,7 +103,11 @@ int main (int argC, char *argV[])
{
// Programm in einer neuen Session laufen lassen.
if (setsid () == -1)
- syslog (LOG_INFO, "setsid fehler");
+ {
+ // Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - setsid fehler");
+ }
// Dateikreierungsmaske löschen.
umask (0);
@@ -135,26 +163,23 @@ int main (int argC, char *argV[])
}
catch (HtsConf::SectionNotFound)
{
- syslog (LOG_INFO,
- "HtsWebGen::main -> Lesen der Datenbank konfiguration, HtsConf::SectionNotFound. ('%s', '%s').",
- strSectionName.c_str (),
- strVariablenName.c_str ());
+ // Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Lesen der Datenbank konfiguration, HtsConf::SectionNotFound. (" + strSectionName + ", " + strVariablenName + ").");
exit (1);
}
catch (HtsConf::VariableNotFound)
{
- syslog (LOG_INFO,
- "HtsWebGen::main -> Lesen der Datenbank konfiguration, HtsConf::VariableNotFound. ('%s', '%s').",
- strSectionName.c_str (),
- strVariablenName.c_str ());
+ // Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Lesen der Datenbank konfiguration, HtsConf::VariableNotFound. (" + strSectionName + ", " + strVariablenName + ").");
exit (1);
}
catch (...)
{
- syslog (LOG_INFO,
- "HtsWebGen::main -> Lesen der Datenbank konfiguration, unbekannte Exception. ('%s', '%s').",
- strSectionName.c_str (),
- strVariablenName.c_str ());
+ // Debug Messages
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Lesen der Datenbank konfiguration, unbekannte Exception. (" + strSectionName + ", " + strVariablenName + ").");
exit (1);
}
@@ -204,16 +229,24 @@ int main (int argC, char *argV[])
if (!boolKommandozeile)
{
- syslog (LOG_INFO, "1. alarm setzen");
+ // Timeout setzen
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 1. alarm setzen");
alarm (iLoginTimeout * 60); // Login-Timeout von Minuten in Sekunden umrechnen.
- syslog (LOG_INFO, "2. boost acceptor");
+ // Boost acceptor
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 2. boost acceptor");
acceptor.accept(*netStream.rdbuf());
-
- syslog (LOG_INFO, "3. alarm beenden");
+
+ // Timeout beenden
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 3. alarm beenden");
alarm (0);
-
- syslog (LOG_INFO, "4. Ready zum HtsCgiLogin senden");
+
+ // Ready zum HtsWebGen senden
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 4. Ready zum HtsCgiLogin senden");
netStream << "Ready\n";
std::getline(netStream, strCgiDaten);
@@ -227,7 +260,9 @@ int main (int argC, char *argV[])
if (iPos == std::string::npos)
{
- syslog (LOG_INFO, "HtsWebGen->main: '%s' wurde nicht gefunden.", strVariablenName.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - " + strVariablenName + " wurde nicht gefunden.");
exit (1);
}
@@ -259,11 +294,17 @@ int main (int argC, char *argV[])
//*****
}
else
- syslog (LOG_INFO, "Kommandozeilen Modus");
+ {
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Kommandozeilen Modus");
+ }
//*****
//* Das CGI-Objekt mit den übertragenen Daten füttern.
- syslog (LOG_INFO, "CGI-Daten empfangen: '%s'", strCgiDaten.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - CGI-Daten empfangen: " + strCgiDaten);
HtsCgi *pCgi = new HtsCgi (strCgiDaten);
@@ -301,10 +342,11 @@ int main (int argC, char *argV[])
try
{
- strSql = "select * from SeitenEigenschaften where BauplanName = '" + pSeitenDb->StringToSql (strBauplanName)+ "';";
+ strSql = "select * from SeitenEigenschaften where BauplanName = '" + pSeitenDb->StringToSql (strBauplanName) + "';";
- if (boolDebugInfo)
- syslog (LOG_INFO, "strSql: '%s'", strSql.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - SQL: " + strSql);
pSeitenDb->ExecSql (strSql);
@@ -312,17 +354,23 @@ int main (int argC, char *argV[])
}
catch (HtsSaveDb::TableEmpty)
{
- syslog (LOG_INFO, "HtsWebGen -> Tabelle: SeitenEigenschaften ist leer: '%s'", strSql.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Tabelle: SeitenEigenschaften ist leer.");
exit (1);
}
catch (HtsSaveDb::NoResult)
{
- syslog (LOG_INFO, "HtsWebGen -> Tabelle: SeitenEigenschaften nix gefunden: '%s'", strSql.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Tabelle: SeitenEigenschaften nix gefunden.");
exit (1);
}
catch (...)
{
- syslog (LOG_INFO, "HtsWebGen -> Tabelle: SeitenEigenschaften unbekannte Exception: '%s'", strSql.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Tabelle: SeitenEigenschaften unbekannte Exception.");
exit (1);
}
@@ -357,11 +405,13 @@ int main (int argC, char *argV[])
// trimString(*itVecCgiVariablenNamen).c_str (),
// pCgi->findFirst(strName).c_str ());
}
-
- syslog (LOG_INFO, "Subsystem: '%s'", strCgiSubsystem.c_str ());
- syslog (LOG_INFO, "Modul : '%s'", strCgiModul.c_str ());
- syslog (LOG_INFO, "Funktion : '%s'", strCgiFunktion.c_str ());
-
+
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Subsystem: " + strCgiSubsystem);
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Modul : " + strCgiModul);
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Funktion : " + strCgiFunktion);
+
// Subsystem : legt die Anwendung fest z.B. Shop.
// Modul : legt innerhalb der Anwendung eine Funktionseinheit fest z.B Suchen
// Funktion : legt eine Funktion innerhalb des Moduls fest z.B. "Suche starten" oder "Suchergebnis Anzeigen"
@@ -379,7 +429,7 @@ int main (int argC, char *argV[])
//*****
// Verarbeite den Seitenbauplan.
- Hts::ExecXmlBauplan siteGen (strBauplan, mapParameter, pSeitenDb);
+ Hts::ExecXmlBauplan siteGen (strBauplan, mapParameter, pSeitenDb, pLog);
std::string strNeueSeite = siteGen.Start ();
// Den Kontainer für Ajax Raw Requests entfernen.
@@ -411,7 +461,9 @@ int main (int argC, char *argV[])
//strNeueDaten = strNeueDaten + "<!DOCTYPE html>\n";
strNeueDaten = strNeueDaten + strNeueSeite;
- syslog (LOG_INFO, "Neue-Seite: '%s'", strNeueDaten.c_str ());
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Neue-Seite: " + strNeueDaten);
// Größe der Seite inkl. HTTP-Header berechnen.
std::ostringstream iToString;
@@ -429,7 +481,11 @@ int main (int argC, char *argV[])
netStream << strNeueDaten << "\n";
if (!netStream)
- syslog (LOG_INFO, "HtsWebGen->main: Fehler beim senden der neuen Daten an das HtsCgiLogin Programm.");
+ {
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Fehler beim senden der neuen Daten an das HtsCgiLogin Programm.");
+ }
netStream.close ();
}
@@ -442,7 +498,9 @@ int main (int argC, char *argV[])
exit (0);
}
- syslog (LOG_INFO, "Die generierten Daten wurden gesendet ...");
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - Die generierten Daten wurden gesendet ...");
//*
//*****
}
@@ -451,17 +509,23 @@ int main (int argC, char *argV[])
}
catch (std::exception &e)
{
- syslog (LOG_INFO, "1. Irgendwas geht nicht: '%s'", e.what ());
- syslog (LOG_INFO, "2. Bei der Fehlermeldung 'Operation not permitted' prüfen ob das Socketfile Verzeichniss über sshfs gemountet ist.");
- syslog (LOG_INFO, "3. Das anlegen von Spezialdateien wie Socketfiles ist über sshfs nicht möglich.");
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 1. Irgendwas geht nicht: " + e.what ());
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 2. Bei der Fehlermeldung 'Operation not permitted' prüfen ob das Socketfile Verzeichniss über sshfs gemountet ist.");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - 3. Das anlegen von Spezialdateien wie Socketfiles ist über sshfs nicht möglich.");
}
catch (...)
{
- syslog (LOG_INFO, "main: unbekannte Exception");
+ // Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - unbekannte Exception");
exit (1);
}
- syslog (LOG_INFO, "HtsOnlineShop beendet");
+// Debug Message
+ pLog->setLogLevel ("Info");
+ pLog->sendMessage (std::string (__FILE__) + " - Call: main - HtsWebGen beendet");
return (0);
//*
//*****
diff --git a/HtsWebGen/src/HtsWebGen.hpp b/HtsWebGen/src/HtsWebGen.hpp
index a79ec64..9576d42 100644
--- a/HtsWebGen/src/HtsWebGen.hpp
+++ b/HtsWebGen/src/HtsWebGen.hpp
@@ -29,6 +29,9 @@
#ifndef HTSWEBGEN_H
#define HTSWEBGEN_H
+#include "../../../Athena-Api/Xml/Xml.hpp"
+#include "../../../Athena-Api/Xml/Xml.cpp"
+
int boolDebugInfo;
#endif //HTSWEBGEN_H