Ich habe einen Windows -Dienst, der in C ++ geschrieben ist. Vor kurzem wurde mir das Microsoft Application -Verifier -Tool aufmerksam, mit dem nicht so offensichtliche Speicherlecks und andere solche Probleme festgehalten werden können. Nach einer Reihe von Debugging habe ich herausgefunden, dass es sich speziell um das Protokollierungs -Framework handelt, das die Abstürze verursacht. Ich habe auch einen mit Boost gemacht, nur um zu vergleichen. < /P>
Poco: < /p>
#include
#include
#include
#include
#include
int main(int argc, char* argv[])
{
using namespace Poco;
// Create a formatter that shows timestamp, priority and message
AutoPtr formatter = new PatternFormatter;
formatter->setProperty("pattern", "%Y-%m-%d %H:%M:%S [%p] %t");
// Wrap the console channel in a formatting channel
AutoPtr formattingChannel = new FormattingChannel(formatter, new ConsoleChannel);
formattingChannel->open();
// Create and configure the logger
Logger& logger = Logger::get("MainLogger");
logger.setChannel(formattingChannel);
logger.setLevel(Message::PRIO_INFORMATION);
for (;;)
{
// Log some messages
logger.information("This is an informational message.");
logger.warning("This is a warning message.");
logger.error("This is an error message.");
Sleep(1000);
}
return 0;
}
< /code>
Boost: < /p>
#include
#include
int main(int argc, char* argv[])
{
for (;;)
{
BOOST_LOG_TRIVIAL(info)
Ich habe festgestellt, dass keiner von ihnen erfolgreich mit allen App -Tests für App -Verifier ausgeführt wird. Für das POCO -Beispiel muss ich nur die Simulation mit niedriger Ressourcen ausschalten, aber für das Boost -Beispiel muss ich sowohl die Simulation mit niedriger Ressourcen als auch die Networking ausschalten, bevor es zuverlässig ausgeführt wird. < /P>
Ich bin mir nicht sicher, was das bedeutet. Sollte ich es vermeiden, Rahmenbedingungen zu protokollieren, um meinen Service zuverlässig zu halten, oder ist dies zu erwarten?
Windows -Dienste und Protokollierungsrahmen und Appverifier ⇐ C++
-
- Similar Topics
- Replies
- Views
- Last post