Trace
3 отговора
162 прегледа
Trace
Имам следния сегмент в app.config файла :
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myfile.log" />
</listeners>
</trace>
</system.diagnostics>
При опит за стартиране на втора инстанция на приложението, се получава exception oт тип : ConfigurationException. Според мен проблема се получава поради това, че първата инстанция е заключила myfile.log файла. Някой знае ли как да се справя с проблема, като listenera се добавя от app.config файла, предполагам, че ако го добавям програмно, този проблем може да бъде лесно избегнат.
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myfile.log" />
</listeners>
</trace>
</system.diagnostics>
При опит за стартиране на втора инстанция на приложението, се получава exception oт тип : ConfigurationException. Според мен проблема се получава поради това, че първата инстанция е заключила myfile.log файла. Някой знае ли как да се справя с проблема, като listenera се добавя от app.config файла, предполагам, че ако го добавям програмно, този проблем може да бъде лесно избегнат.
Re: Trace
Мерси
, само дето аз никъде не използвам EventLog.
Работя с класа Trace, ето една от неговите функции :
public static void Write(string message) {
TraceListener local0;
object local1;
IEnumerator local2;
IDisposable local3;
lock (TraceInternal.critSec) {
local2 = TraceInternal.Listeners.GetEnumerator();
try {
while (local2.MoveNext()) {
local0 = (TraceListener) local2.Current;
local0.Write(message);
if (!(TraceInternal.AutoFlush))
continue;
local0.Flush();
}
}
finally {
local3 = local2 as IDisposable;
if (local3 == null)
goto i-1;
local3.Dispose();
}
}
}
Това не е функция на класа Trace, a на TraceInternal, но дефакто се извиква тя. А иначе exception-a не беше много описателен, просто ConfigurationException, дори без пътя откъдето е хвърлен...
"An unhandled exception of type 'System.Configuration.ConfigurationException' occurred in system.dll
Additional information: Exception in configuration section handler
"
Пък за обидите - ко ти пука.
Работя с класа Trace, ето една от неговите функции :
public static void Write(string message) {
TraceListener local0;
object local1;
IEnumerator local2;
IDisposable local3;
lock (TraceInternal.critSec) {
local2 = TraceInternal.Listeners.GetEnumerator();
try {
while (local2.MoveNext()) {
local0 = (TraceListener) local2.Current;
local0.Write(message);
if (!(TraceInternal.AutoFlush))
continue;
local0.Flush();
}
}
finally {
local3 = local2 as IDisposable;
if (local3 == null)
goto i-1;
local3.Dispose();
}
}
}
Това не е функция на класа Trace, a на TraceInternal, но дефакто се извиква тя. А иначе exception-a не беше много описателен, просто ConfigurationException, дори без пътя откъдето е хвърлен...
"An unhandled exception of type 'System.Configuration.ConfigurationException' occurred in system.dll
Additional information: Exception in configuration section handler
"
Пък за обидите - ко ти пука.
Re: Trace
няма значение това ... идеята е същата ... наследяваш и след Flush() викаш Close() ...
public static void Write(string message) {
TraceListener local0;
object local1;
IEnumerator local2;
IDisposable local3;
lock (TraceInternal.critSec) {
local2 = TraceInternal.Listeners.GetEnumerator();
try {
while (local2.MoveNext()) {
local0 = (TraceListener) local2.Current;
local0.Write(message);
local0.Flush();
local0.Close();
}
}
finally {
local3 = local2 as IDisposable;
if (local3 == null)
goto i-1;
local3.Dispose();
}
}
}
XM TurboCT .. where comfort meets power
public static void Write(string message) {
TraceListener local0;
object local1;
IEnumerator local2;
IDisposable local3;
lock (TraceInternal.critSec) {
local2 = TraceInternal.Listeners.GetEnumerator();
try {
while (local2.MoveNext()) {
local0 = (TraceListener) local2.Current;
local0.Write(message);
local0.Flush();
local0.Close();
}
}
finally {
local3 = local2 as IDisposable;
if (local3 == null)
goto i-1;
local3.Dispose();
}
}
}
XM TurboCT .. where comfort meets power
Re: Trace
А какво прави:
<{ class ILEngineer::Ops::MSIL::InitObj }>;
peace, love, unity
<{ class ILEngineer::Ops::MSIL::InitObj }>;
peace, love, unity