我有一個輸出跟蹤信息的庫程序集,以及一個通過app.config添加跟蹤偵聽程序的客戶端winforms應用程序。如果我要在ASP.NET中使用庫,但未配置System.Diagnostics跟蹤,我怎麼能'捕捉'跟蹤輸出?ASP.NET中的跟蹤偵聽器
獎勵問題:我可以用Elmah做些什麼來記錄和記錄這些信息嗎?我們的ASP.NET應用程序當前使用Elmah進行錯誤日誌記錄,但這就是我所知道的事情。
我有一個輸出跟蹤信息的庫程序集,以及一個通過app.config添加跟蹤偵聽程序的客戶端winforms應用程序。如果我要在ASP.NET中使用庫,但未配置System.Diagnostics跟蹤,我怎麼能'捕捉'跟蹤輸出?ASP.NET中的跟蹤偵聽器
獎勵問題:我可以用Elmah做些什麼來記錄和記錄這些信息嗎?我們的ASP.NET應用程序當前使用Elmah進行錯誤日誌記錄,但這就是我所知道的事情。
寫代碼 - 你會之後
我認爲,只要庫輸出跟蹤信息,就可以使用任何專用工具(如DebugView)甚至是家用工具捕獲此信息,而不管ASP.NET配置如何。
我認爲這是舊的,回答完成,但是..我剛剛有同樣的問題,我想出了
異常類的TraceListener
namespace TrueNorth.Elmah.TraceListener
{
internal class TraceInformation : Exception
{
internal TraceInformation(string message) : base(message){}
}
internal class TraceError: Exception
{
internal TraceError(string message) : base(message) { }
}
internal class TraceWarning : Exception
{
internal TraceWarning(string message) : base(message) { }
}
internal class TraceWrite : Exception
{
internal TraceWrite(string message) : base(message) { }
}
}
聽者
namespace TrueNorth.Elmah.TraceListener
{
internal class ElmahListener : System.Diagnostics.TraceListener
{
public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string format, params object[] args)
{
TraceEvent(eventCache, source, eventType, id, string.Format(format, args));
}
public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message) //
{
Exception exception;
switch (eventType)
{
case TraceEventType.Information:
exception = new TraceInformation(message);
break;
case TraceEventType.Error:
exception = new TraceError(message);
break;
case TraceEventType.Warning:
exception = new TraceWarning(message);
break;
default:
exception = new TraceWrite(message);
break;
}
if (HttpContext.Current.Session == null)
{
ErrorLog.GetDefault(null).Log(new Error(exception));
}
else
{
ErrorSignal.FromCurrentContext().Raise(exception);
}
}
public override void TraceTransfer(TraceEventCache eventCache, string source, int id, string message, Guid relatedActivityId)
{
base.TraceTransfer(eventCache, source, id, message, relatedActivityId);
}
public override void Write(string message)
{
}
public override void WriteLine(string message)
{
}
}
}
而且,GO代碼(你可以用你的web.config)
Tracer.Register();
博客在http://truenorthit.co.uk/2015/04/17/trace-listener-for-elmah-asp-mvc-exception-logger/
我想捕捉它沒有一個專門的工具。 – ProfK 2009-06-12 16:50:10