Hallo
ik heb een programma in c# met verschillende class-files
ik heb overal foutopvanging ingebouwd met een try-catch
nu wil ik een eventuele fout loggen in een text-file.
Nu is dat geen probleem met een listener
dus ik creeer in iedere catch een nieuwe listener die naar dezelfde file verwijst (pad staatn in app.config)
Nu kreeg ik de foutmelding dat mijn file in gebruik was, dus deed ik in iedere catch nog een listener.dispose, maar toen kreeg ik de melding dat hij nie kan schrijven naar een gesloten file (ook al stond deze regel op het einde van de catch)
ik ga morgen de code posten want die ligt op het werk....
ik had de code van google afgehaald.
Heeft iemand al een ideetje waar dit aan zou kunnen leggen?
code volgt nog...
de code :
aanroep:
de aanroep gebeurd in een "finally" en zit in een lus dus gebeurt meerdere malen.
ik heb een programma in c# met verschillende class-files
ik heb overal foutopvanging ingebouwd met een try-catch
nu wil ik een eventuele fout loggen in een text-file.
Nu is dat geen probleem met een listener
dus ik creeer in iedere catch een nieuwe listener die naar dezelfde file verwijst (pad staatn in app.config)
Nu kreeg ik de foutmelding dat mijn file in gebruik was, dus deed ik in iedere catch nog een listener.dispose, maar toen kreeg ik de melding dat hij nie kan schrijven naar een gesloten file (ook al stond deze regel op het einde van de catch)
ik ga morgen de code posten want die ligt op het werk....
ik had de code van google afgehaald.
Heeft iemand al een ideetje waar dit aan zou kunnen leggen?
code volgt nog...
de code :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| using System;
using System.Diagnostics;
using System.IO;
using System.Configuration;
namespace Kraft
{
/// <summary>
/// Summary description for CustomTextWriterTraceListener.
/// </summary>
public class CustomTextWriterTraceListener :TextWriterTraceListener
{
private static object dork = new Object();
public CustomTextWriterTraceListener(string file): base(file)
{
}
public CustomTextWriterTraceListener(string file, string name):base(file,name)
{
}
public override void Write(string message)
{
lock(dork)
{
message=DateTime.Now.ToLongTimeString() + "," +message;
base.Write(message);
}
}
public override void WriteLine(string message, string category)
{
lock(dork)
{
message=DateTime.Now.ToLongTimeString() + "," +message + "," + category;
base.WriteLine (message);
}
}
public override void Write(string message, string category)
{
lock(dork)
{
message=DateTime.Now.ToLongTimeString() + "," +message + "," +category;
base.Write (message);
}
}
public override void WriteLine(string message)
{
lock(dork)
{
message=DateTime.Now.ToLongTimeString() + "," +message;
base.WriteLine(message);
}
}
}
public class TraceLog
{
public static CustomTextWriterTraceListener myWriter;
static TraceLog()
{
// logfile-pad ophalen uit app.config
String traceString = ConfigurationSettings.AppSettings["MyTraceDir2"];
myWriter =new CustomTextWriterTraceListener(traceString);
Trace.Listeners.Add(myWriter);
}
}
} |
aanroep:
code:
1
2
3
4
| TraceLog.myWriter.WriteLine("record inserted");
TraceLog.myWriter.Flush();
//TraceLog.myWriter.Close();
TraceLog.myWriter.Dispose(); |
de aanroep gebeurd in een "finally" en zit in een lus dus gebeurt meerdere malen.
[ Voor 60% gewijzigd door Verwijderd op 02-11-2005 09:57 ]