Brett Romero wrote:
Thanks. This gives output similar to:
---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
b.Equals(0): False
---- Assert Long Message ----
at Startup.UT() C:\Test\TestCon sole\Main.cs(27 )
at Startup.Main(St ring[] args) C:\Test\TestCon sole\Main.cs(18 )
at AppDomain.nExec uteAssembly(Ass embly assembly, String[] args)
at AppDomain.Execu teAssembly(Stri ng assemblyFile, Evidence
assemblySecurit y, String[] args)
at HostProc.RunUse rsAssembly()
at ThreadHelper.Th readStart_Conte xt(Object state)
at ExecutionContex t.Run(Execution Context executionContex t,
ContextCallback callback, Object state)
at ThreadHelper.Th readStart()
Is there a way to just output just this part:
---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
b.Equals(0): False
---- Assert Long Message ----
at Startup.UT() C:\Test\TestCon sole\Main.cs(27 )
at Startup.Main(St ring[] args) C:\Test\TestCon sole\Main.cs(18 )
The other information is useless to me. The message, file, and a line
number with current code and caller is all I need.
Thanks,
Brett
Here is some sample code:
using System.Diagnost ics;
using System.IO;
namespace ConsoleApplicat ion
{
public class LogListener : DefaultTraceLis tener
{
public override void Fail(string message, string detailMessage)
{
// needs to pop up UI
if(AssertUiEnab led)
base.Fail(messa ge, detailMessage);
// is a log file configured??
if (LogFileName == null
|| LogFileName == string.Empty)
return;
using (StreamWriter logFile =
new StreamWriter(Lo gFileName, true))
{
StackTrace stack = new StackTrace();
StackFrame[] frames = stack.GetFrames ();
// extract and log what you need....
logFile.WriteLi ne(stack);
}
}
}
class Program
{
static void Main(string[] args)
{
Debug.Assert(fa lse, "BOOM");
}
}
}
By using the following app.config aou can inject your implemetation:
<?xml version="1.0" encoding="utf-8" ?>
<configuratio n>
<system.diagnos tics>
<trace autoflush="true " indentsize="0">
<listeners>
<clear />
<!--Use full qualified type name-->
<add
name="LogListen er"
type="ConsoleAp plication.LogLi stener, ConsoleApplicat ion"
/>
</listeners>
</trace>
<assert assertuienabled ="false" logfilename="c: \log.txt"/>
</system.diagnost ics>
</configuration>
HTH,
Andy
--
You can email me directly by removing the NOSPAm below
xm**********@gm xNOSPAm.netNOSPAm