Hallo zusammen,
ich bin gerade dabei eine Logfile Klasse zu schreiben, die mir Meldungen im html Format ausgibt.
Die Datei wird erstellt, und die ersten Daten werden in die Datei geschrieben. Wenn ich dann weiteres in die Datei schreiben will bekomme ich folgende Meldung :
Wenn ich in Einzelschritten dem Programm Ablauf folge passiert der Fehler nach fopen_s(&m_LogFile, LogName, "a"); in der Funktion void CLogfile::Textout nach dem Erstellen der Überschrift, Email ect.
Logfile Klasse
Spoiler anzeigen
Singleton Klasse
Spoiler anzeigen
Der letzte Abschnitt bei der Logfile Klasse die, die Datei erstellt endet mit :
Der Stream sollte geschlossen werden und im Append Modus wieder geöfnnet werden. Beim erneuten schreiben passiert es.
Hoffe ihr könnt mir weiter helfen. lg
ich bin gerade dabei eine Logfile Klasse zu schreiben, die mir Meldungen im html Format ausgibt.
Die Datei wird erstellt, und die ersten Daten werden in die Datei geschrieben. Wenn ich dann weiteres in die Datei schreiben will bekomme ich folgende Meldung :
Wenn ich in Einzelschritten dem Programm Ablauf folge passiert der Fehler nach fopen_s(&m_LogFile, LogName, "a"); in der Funktion void CLogfile::Textout nach dem Erstellen der Überschrift, Email ect.
Logfile Klasse
CLogfile.cpp
Spoiler anzeigen
CLogfile.h
Spoiler anzeigen
C-Quellcode
- #include "CLogfile.h"
- CLogfile::CLogfile() {
- m_LogFile = nullptr;
- }
- CLogfile::~CLogfile() {
- //Destruktor
- //Logfile Ende schreiben und Datei schließen
- Textout("<br><br>End of logfile</font></body></html>");
- fclose(m_LogFile);
- }
- void CLogfile::Textout(const char* Text) {
- fprintf(m_LogFile, Text);
- fflush(m_LogFile);
- }
- void CLogfile::CreateLogfile(const char* LogName) {
- //Logfile leeren und Kopf schreiben
- fopen_s(&m_LogFile, LogName, "w");
- Textout("<html><head><title>Logfile</title></head>");
- Textout("<bod><font face='courier new'>");
- WriteTopic("Logfile", 3);
- #ifdef _DEBUG
- Textout("BUILD: DEBUG <br>");
- #else
- Textout("BUILD: RELEASE<br>");
- #endif // _DEBUG
- Textout("<a href='mailto:hiermaileinfuegen@gmail.com?subject=Logfile'>");
- Textout("Send E-Mail to me</a><br><br>");
- //Logfile schließen und mit append wieder öffnen
- fclose(m_LogFile);
- fopen_s(&m_LogFile, LogName, "a");
- }
- void CLogfile::WriteTopic(const char* Topic, int size) {
- //Überschrift schreiben und flushen
- Textout("<table cellspacing='0' cellpadding='0' width = '100%%' ");
- Textout("bgcolor='#DFDFE5'>\n<tr>\n<td>\n<font face='arial' ");
- fTextout("size='+%i'>\n", size);
- Textout(Topic);
- Textout("</font>\n</td>\n</tr>\n</table>\n<br>");
- fflush(m_LogFile);
- }
- void CLogfile::Textout(int color, const char* Text) {
- Textout(color, false, Text);
- }
- void CLogfile::Textout(int color, bool List, const char* Text) {
- //Listentag schreiben
- if (List == true) {
- Textout("<li>");
- }
- //Farbtag schreiben
- switch (color)
- {
- case BLACK:
- Textout("<font color=black>"); break;
- case RED:
- Textout("<font color=red>"); break;
- case GREEN:
- Textout("<font color=green>"); break;
- case BLUE:
- Textout("<font color=blue>"); break;
- case PURPLE:
- Textout("font color=purple>"); break;
- };
- Textout(Text);
- Textout("</font>");
- if (List == false) {
- Textout("<br>");
- }
- else {
- Textout("</li>");
- }
- }
- void CLogfile::fTextout(const char *Text, ...) {
- CHAR buffer[MAX_BUFFER];
- va_list pArgList;
- va_start(pArgList, Text);
- vsprintf_s (buffer, Text, pArgList);
- va_end(pArgList);
- Textout(buffer);
- }
- void CLogfile::fTextout(int Color, const char *Text, ...) {
- CHAR buffer[MAX_BUFFER];
- va_list pArgList;
- va_start(pArgList, Text);
- vsprintf_s(buffer, Text, pArgList);
- va_end(pArgList);
- Textout(Color, buffer);
- }
- void CLogfile::fTextout(int color, bool List, const char* Text, ...) {
- CHAR buffer[MAX_BUFFER];
- va_list pArgList;
- va_start(pArgList, Text);
- vsprintf_s(buffer, Text, pArgList);
- va_end(pArgList);
- Textout(color, List, buffer);
- }
- void CLogfile::FunctionResult(const char* Name, bool Result) {
- if (L_OK == Result) {
- Textout("<table width='100%%' cellSpacing='1' cellPadding='5'");
- Textout(" border='0' bgcolor='#C0C0C0C0'><tr><td bgcolor=");
- fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name);
- Textout("'green'>OK</FONT></TD><td bgcolor='#FFFFFF' ");
- Textout("width='35%%'>-/-</TD></tr></table>");
- }
- else {
- Textout("<table width='100%%' cellSpacing='1' cellPadding='5'");
- Textout(" border='0' bgcolor='#C0C0C0C0'><tr><td bgcolor=");
- fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name);
- Textout("'red'>ERROR</FONT></TD><td bgcolor='#FFFFFF' ");
- Textout("width='35%%'>-/-</TD></tr></table>");
- }
- }
CLogfile.h
C-Quellcode
- #pragma once
- #ifndef __CLOGFILE
- #define __CLOGFILE
- #include <Windows.h>
- #include <stdio.h>
- #include "Singleton.h"
- constexpr auto MAX_BUFFER = 1024;
- constexpr auto L_FAIL = false;
- constexpr auto L_OK = true;
- #define g_pLogFile CLogfile::Get()
- enum FONTCOLORS {
- BLACK,
- RED,
- GREEN,
- BLUE,
- PURPLE
- };
- class CLogfile : public Singleton<CLogfile>
- {
- public:
- CLogfile();
- ~CLogfile();
- void CreateLogfile(const char *LogName);
- void WriteTopic(const char *topic, int size);
- void Textout(const char *Text);
- void Textout(int Color, const char *Text);
- void Textout(int color, bool List, const char *Text);
- void fTextout(const char *Text, ...);
- void fTextout(int color, const char *Text,...);
- void fTextout(int color, bool List, const char* Text, ...);
- void FunctionResult(const char* Name, bool Result);
- private:
- FILE* m_LogFile;
- };
- #endif // !__CLOGFILE
Singleton Klasse
C-Quellcode
- #pragma once
- #ifndef SINGLETON
- #define SINGLETON
- template <class T>
- class Singleton
- {
- protected:
- static T* m_pSignleton;
- public:
- virtual ~Singleton() {};
- inline static T* Get() {
- if (!m_pSignleton) {
- m_pSignleton = new T;
- return (m_pSignleton);
- }
- }
- static void Del() {
- if (m_pSignleton) {
- delete (m_pSignleton);
- m_pSignleton = nullptr;
- }
- }
- };
- // Die Statische Variabel erzeugen
- template<class T>
- T* Singleton<T>::m_pSignleton = nullptr;
- #endif
-
Der letzte Abschnitt bei der Logfile Klasse die, die Datei erstellt endet mit :
Der Stream sollte geschlossen werden und im Append Modus wieder geöfnnet werden. Beim erneuten schreiben passiert es.
Hoffe ihr könnt mir weiter helfen. lg