LLBLGenPro diagnostic traces - no output?

Posts   
 
    
noobix
User
Posts: 14
Joined: 06-Nov-2007
# Posted on: 11-Apr-2008 11:30:34   

Hello,

using the configuration below I'm wondering why the System.Net.Sockets trace listener creates a log file and the LLBLGenProListener listener doesn't?

  <system.diagnostics>
        <switches>
              <add name="System.Net.Sockets" value="Verbose"/>
              <add name="SqlServerDQE" value="4"/>
              <add name="ORMGeneral" value="4"/>
              <add name="ORMStateManagement" value="4"/>
              <add name="ORMPersistenceExecution" value="4"/>
        </switches>
        <sharedListeners>
              <add name="NetworkFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log" traceOutputOptions="Timestamp" />
              <add name="LLBLGenProListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="llblgenpro.log" traceOutputOptions="Timestamp" />
        </sharedListeners>
              <source name="System.Net.Sockets" tracemode="protocolonly" maxdatasize="1024">
                    <listeners>
                          <add name="NetworkFileListener"/>
                    </listeners>
              </source>
              <source name="SqlServerDQE" >
                    <listeners>
                          <add name="LLBLGenProListener"/>
                    </listeners>
              </source>
        </sources>
        <trace autoflush="true"/>
  </system.diagnostics>

Regards, Tino

Walaa avatar
Walaa
Support Team
Posts: 14993
Joined: 21-Aug-2005
# Posted on: 11-Apr-2008 11:48:25   

No Idea, but could you try if the following generated the file.

    <system.diagnostics>
        <switches>
            <add name="SqlServerDQE" value="4" />
            <add name="ORMGeneral" value="4" />
            <add name="ORMStateManagement" value="4" />
            <add name="ORMPersistenceExecution" value="4" />
        </switches>
        <trace autoflush="true" indentsize="2">
            <listeners>
                <add name="textWriterListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\llblgenpro.log" />
            </listeners>
        </trace>
    </system.diagnostics>   
Joggle
User
Posts: 2
Joined: 11-Nov-2008
# Posted on: 11-Nov-2008 11:17:05   

Sorry for warming up this thread.

Tracing works like a charm. But sometimes I would like to see a timestamp in the tracing.

I tried <add name="textWriterListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\llblgenpro.log" traceOutputOptions="DateTime" />

but that did no difference. Any way?

Walaa avatar
Walaa
Support Team
Posts: 14993
Joined: 21-Aug-2005
# Posted on: 11-Nov-2008 12:00:48   

I think that's not available by default. Maybe you'll need to derive your own trace listener.

Please check step 6 in the following article: http://www.codeproject.com/KB/dotnet/customnettracelisteners.aspx

Joggle
User
Posts: 2
Joined: 11-Nov-2008
# Posted on: 11-Nov-2008 15:18:39   

Thanks, that works perfectly. Here is part of the code to share with others:


    public class DateTimeTextWriterTraceListener : TextWriterTraceListener
    {
        private static object locking = new object();
        private static CultureInfo cultureInfo = CultureInfo.GetCultureInfo("de-DE");
        private static string dateFormat = "dd.MM.yyyy HH:mm:ss.ffff";

        private static string NowString
        {
            get
            {
                return DateTime.Now.ToString(dateFormat, cultureInfo);
            }
        }

        #region constructor
        public DateTimeTextWriterTraceListener()
        {}
        public DateTimeTextWriterTraceListener(string fileName) : base(fileName)
        {}
        public DateTimeTextWriterTraceListener(System.IO.Stream stream) : base(stream)
        {}
        public DateTimeTextWriterTraceListener(System.IO.TextWriter writer) : base(writer)
        {}
        public DateTimeTextWriterTraceListener(string fileName, string name) : base(fileName, name)
        {}
        public DateTimeTextWriterTraceListener(System.IO.Stream stream, string name) : base(stream, name)
        {}
        public DateTimeTextWriterTraceListener(System.IO.TextWriter writer, string name) : base(writer, name)
        { }
        #endregion

        #region Write
        public override void Write(string message)
        {
            lock (locking)
            {
                base.Write(DateTimeTextWriterTraceListener.NowString);
                base.Write(": ");
                base.Write(message);
            }
        }

        public override void WriteLine(string message)
        {
            lock (locking)
            {
                base.Write(DateTimeTextWriterTraceListener.NowString);
                base.Write(": ");
                base.WriteLine(message);
            }
        }
    }

and the config looks like that:


    <system.diagnostics>
        <switches>
            <add name="ORMPersistenceExecution" value="4"/>
        </switches>
        <trace autoflush="true" indentsize="4">
            <listeners>
                <add name="ormDiagListener" type="MyProject.Utility.DateTimeTextWriterTraceListener,MyProject.Utility" initializeData="ormDiagnostics.log" traceOutputOptions="DateTime" />
                <remove name="Default" />
            </listeners>
        </trace>
    </system.diagnostics>

"type" contains here ClassName,AssemblyName