PDA

View Full Version : [C++]Creare log programma.


4ndr34s
20-03-2009, 16:16
ciao a tutti
come da titolo, sapreste dirmi come fare?

ndakota
20-03-2009, 16:19
non si capisce cosa intendi.. esterna meglio cosa vorresti fare..

Tommo
20-03-2009, 18:01
Dici un output che raccoglie le "esternazioni" testuali del tuo programma?

Io ti consiglio di fare una classe interfaccia + sue implementazioni, per cambiare log anche a runtime.

Log::setGlobalLog( new MyFileLog( "file_di_log.txt" ) );

Log::log( "Hello World!", PRIORITY_HIGH);

Come fare un'implementazione completa in realtà è facile,
ad esempio per fare output su file si tratta di aprire un fstream ed usarci l'operatore <<.
Senza dimenticare di chiuderlo :D

4ndr34s
20-03-2009, 18:08
ho risolto in questo modo:
FILE *file;
file = fopen("UGProtectLogs.txt","a");
char memdata[200]="\nHotKeys Detected";

fwrite (memdata, 1 , sizeof(memdata), file );
fclose(file);

Tommo
20-03-2009, 18:19
Ma quindi ti serviva solo come scrivere su un file?
Quel modo mi sembra davvero macchinoso... e poi e' per C :asd:

Meglio così:

#include <fstream>
...

fstream file( "UGProtectLogs.txt" );

file << "\nHotKeys Detected";

file.close();

fero86
20-03-2009, 18:20
il bello é che dapprima te la rifilano come una questione peculiarissima mai sentita per la quale non riescono ad immaginare una soluzione, come se non lo sapessero che basta scrivere su un file esattamente come scriverebbero su qualunque altro file :asd:
dopodiché se ne escono "ah ok, ho risolto in questo modo" ed il modo é pure sbagliato perché usa in C++ l'interfaccia di I/O del C :sbonk:

a volte mi pare che la gente scriva sul forum cosi tanto per perdere qualche minuto :rolleyes:

4ndr34s
20-03-2009, 18:25
adesso però non capisci perchè i log escano: il primo sulla prima riga tutti gli altri buttati verso destra, questa è la modifica che ho apportato:
FILE *file;
file = fopen("UGProtectLogs.txt","a");
char memdata[200]=" HotKeys Detected\n";
char TimeLocal[20]="\n";


fwrite(timeDate, 1 , sizeof(TimeLocal) , file);
fwrite (memdata, 1 , sizeof(memdata), file );
fclose(file);

wingman87
20-03-2009, 18:36
Scusa ma come puoi pretendere di essere aiutato se non leggi nemmeno le risposte? Tommo ti ha dato la soluzione migliore.

4ndr34s
20-03-2009, 18:40
con il codice di tommo mi dava una serie di errori nella compila, e perciò ho pensato di intraprendere un altra via ....

4ndr34s
20-03-2009, 18:42
ah ecco, adesso risolto, con le stringhe che ho scritto prima.