Ich habe meine eigene einfache Klasse für die Protokollierung geschrieben. Ich verstehe, dass ich besser, eine Art von Bibliothek (boost.log, log4cpp?) zu verwenden, aber lassen Sie uns trotzdem meine einfache Klasse diskutieren:
#include "stdafx.h"
#include "Logger.h"
Logger::Logger(std::string fileName)
{
logFile.open(fileName);
}
Logger::~Logger(void)
{
logFile.close();
}
void Logger::Error(std::string message) {
logFile << message << std::endl;
}
void Logger::Debug(std::string message) {
logFile << message << std::endl;
}
- Ich möchte, dass meine Methoden eine variable Anzahl von Argumenten akzeptieren, so dass ich Parameter wie diese übergeben kann
"Error code: %x", code
. Wie kann man das tun? - Ich möchte
Debug
Methode ausgeschlossen werden, wennLOG_DEBUG
Kompilierungssymbol nicht gesetzt ist. In C# kann ich einfach hinzufügen[Conditional("LOG_DEBUG")]
vor der Deklaration der Methode, aber wie soll man das in C++ machen?
update Zu 1: Das habe ich ausprobiert und es funktioniert:
void Logger::Debug(std::string message, ...) {
va_list arglist;
fprintf(pFile, message.c_str(), arglist);