Ceazione di un file di log per gli errori

lunedì 12 maggio 2008 - 09.31

mame37 Profilo | Junior Member

Ho bisogno di creare un file che contengagli errori che avvengono all'interno del mio try catch in un file di testo..sapete aiutarmi?

catch (Exception ex)
{
Console.WriteLine("Errore: " + ex.Message);
}

AndreaKpr Profilo | Senior Member


Protresti farti una classettina di gestione...
Quato potrebbe essere il metodo di scrittura sulla generazione dell'eccezzione ...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ovviamente "AbsolutePathLogFile" sarebbe da settare prima...

mame37 Profilo | Junior Member

in che senso scusa da settare? non sono molto esperto puoi aiutarmi?

mame37 Profilo | Junior Member

...

AndreaKpr Profilo | Senior Member


Quello che ha postato Coach è molto interessante (tra l'altro mis ache lo uilizzerò )
Ma per te a quanto pare è un pò troppo avanzato...

Allora prova la scrivere una classettina cosi :

Public Class cLog { public void cLog () {} string AbsolutePathLogFile = "C:\\Log\\Log.Txt""; public void WriteLogToFile(String Exp) { if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(AbsolutePathLogFile))) System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(AbsolutePathLogFile)); System.IO.StreamWriter File = System.IO.File.AppendText(AbsolutePathLogFile); if (!string.IsNullOrEmpty(Exp)) File.WriteLine(Exp); File.Close(); } }

nella tua form o classe che sia fai cosi

Try { ... } catch (Exception Exp) { cLog Lg = new cLog(); Lg.AbsolutePathLogFile(Exp.Message) Lg = null;

Non ho considerato namespace vari, per quello pensaci tu...
Altre cose che potresti fare nella classe di log è postare anche la data ed ora dell'errore...
Magari formattango un pò il codice.

Ciao

mame37 Profilo | Junior Member

mi sembra molto difficile da capire non riesco a capire quello che dovrei fare

mame37 Profilo | Junior Member

l'impegno ce l'ho metto, sono riusvito a crearmi il file e a scrivere solo il problema è che mi scrive solo la prima riga mentre essendo all'interno di un ciclo if dovrebbe continuare a scrivere sotto ad ogni riga già scritta ma invece scrive solo l'ultimo messaggio che arriva come posso fare?

AndreaKpr Profilo | Senior Member

Posta il codice ...

mame37 Profilo | Junior Member

La procedura comm.ExecuteNonQuery(); nel caso in cui dati che vengono dal ciclo if sono già presenti al db a cui li voglio inviare mi da un errore che visualizza nella console. tali errori voglio metterli in un file di testo in modo che mi appaiano uno sotto l'altro come vedo in console . ma ogni volta il file mi viene sovrascritto. se avete bisogno di altre info chiedete pure

AndreaKpr Profilo | Senior Member



Invece che cosi :
StreamWriter logtxt = new StreamWriter(@"C:\Users\**\Desktop_" + Time + ".txt");

Prova cosi:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

mame37 Profilo | Junior Member

System.IO.File.AppendText(string) is a method but is used like a 'type'..
The type name 'AppendTex' does not exist in the type 'System.IO.File'
mi da questi errori.
Risolto grazie basta togliere il new!
grazie!

AndreaKpr Profilo | Senior Member


l'ho provato ...

try
{
comm.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException er)
{
Console.WriteLine("Errore: Row " + i + ". " + er.Message);
StreamWriter logtxt = System.IO.File.AppendText(@"C:\Users\**\Desktop_" + Time + ".txt");
logtxt.WriteLine(er.Message + DateTime.Now);
logtxt.Close();
}

Controlla errori di battitura ...

mame37 Profilo | Junior Member

perfetto solo che non mi da errore a logtxt.close
The name 'logtxt' does not exist in the current context

AndreaKpr Profilo | Senior Member


mmmm controlla bene il codice, nell'esempio che ti ho postato l'ho dichiarato 3 righe sopra...
MI sembra un pò strano che non lo riconosca...

mame37 Profilo | Junior Member

ecco non me ne va bene una adesso che mi era tornato tutto mi è stato detto di creare una funzione che mi faccia la stessa cosa..capite perchè odio la scuola?
In poche parole deve creare una funzione che faccia questo


StreamWriter logtxt = System.IO.File.AppendText(@"C:\Users\***\Desktop\Log.txt");
logtxt.WriteLine(DateTime.Now + " Errore: " + ex.Message);
logtxt.Close();

sapete come aiutarmi? e come faccio poi a richiamarla all'interno del programma?
grazie a tutti x le risp!

AndreaKpr Profilo | Senior Member


Buongiorno !!!
Mmmm è quello che ti avevo consigliato già nel mio primo post...

mame37 Profilo | Junior Member

risolto!

AndreaKpr Profilo | Senior Member

L'eccezzione la devi passare alla funzione, fai cosi ...

static void vflogfunction(Exception er)
{
string Time;
string Year = DateTime.Now.Year.ToString();
string Month = DateTime.Now.Month.ToString();
string Day = DateTime.Now.Day.ToString();
Time = Day + "-" + Month + "-" + Year;
StreamWriter logtxt = System.IO.File.AppendText(@"C:\Users\***\Desktop\VfLog_" + Time + ".txt");
logtxt.WriteLine(DateTime.Now + " Errore: " + er.Message);
logtxt.Close();
}

Ovviamente nel codice fai

try
{
...
}
catch(Exception Exp)
{
vflogfunction (Exp);
}

mame37 Profilo | Junior Member

SEMPLICEMENTE UN IDOLO!! GRANDE GRAZIE DI TUTTO!

mame37 Profilo | Junior Member

grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5