Я пытаюсь заставить мой клиент, который работает с Linux и Windows, работать с Mac. У меня есть класс журнала, поэтому я могу видеть, что происходит, и ловить ошибки, но мой файл журнала даже не выводится. Файл журнала объявляется глобально, поэтому он должен по крайней мере вывести заголовок файла журнала независимо от этого. Я использую терминальную версию C ++ с Xcode.
Вот мой лог-код:
log.h
#ifndef LOG_H
#define LOG_H
#include <fstream>
using namespace std;
class Log
{
public:
// Constructor / Destructor
Log();
~Log();
// Class functions
void writeNewline();
void writeError(char * text,...);
void writeSuccess(char * text,...);
private:
ofstream logfile;
};
#endif
log.cpp
#include <ctime>
#include <stdarg.h>
#include "log.h"
const int BUFFER_SIZE = 1024;
using namespace std;
Log::Log()
{
// Create a log file for output
logfile.open ("lanternlog.txt", ios::out);
// Grab the current system time
time_t t = time(0);
struct tm * now = localtime( & t );
// TODO: Format the time correctly
// Insert the time and date at the top
logfile << "<---> Logfile Initialized on " << now->tm_mon + 1 << "-" <<
now->tm_mday << "-" << now->tm_year + 1900 << " at " << now->tm_hour <<
":" << now->tm_min << ":" << now->tm_sec << endl;
}
// Destructor
Log::~Log()
{
// Close the logfile
logfile.close();
}
void Log::writeError(char * text,...)
{
// Grab the variables and insert them
va_list ap;
va_start(ap, text);
char buff[BUFFER_SIZE];
vsnprintf(buff, sizeof(buff), text, ap);
// Output to the log
logfile << "<-!-> " << buff << endl;
}
void Log::writeSuccess(char * text,...)
{
// Grab the variables and insert them
va_list ap;
va_start(ap, text);
char buff[BUFFER_SIZE];
vsnprintf(buff, sizeof(buff), text, ap);
// Output to the log
logfile << "<---> " << buff << endl;
}
void Log::writeNewline()
{
// Create a new line in the logfile
logfile << endl;
}
Когда приложение закрывается, и я отбрасываю точку останова, файл журнала должен уже что-то выводить. Также есть предупреждение со всеми моими командами журнала. Например:
errorLog.writeSuccess("Fatal Error: Unable to initialize Lantern!");
выход: преобразование строкового литерала в 'char *' не рекомендуется
Тем не менее, основная инициализация файла журнала не использует этот метод и должен выводить файл.
Первый вопрос был решен! Проверьте ниже для другой ошибки:
Редактировать: Кажется, я немного продвинулся дальше. Файл журнала создается, но создается в папке harddrive / users /. Как бы я просто вывести его в папку проекта XCode, как с Visual Studio.