Nicko,
Thanks for your response. When I use the LogFileAppender it logs the
property values when remoting is used. However when a buffering appender
is used e.g. adonetappender, the property does not get stored. There are
no internal errors thrown as well. While debugging I found that the MDC
gets cleared in the BufferingSkeleton.cs at the following code when I
use remoting.
=========================================
if (m_bufferSize <= 1)
{
 // Only send the event if we are in non lossy mode or the event is a
triggering event
if ((!m_lossy) ||       (m_evaluator != null &&
m_evaluator.IsTriggeringEvent(loggingEvent)) || (m_lossyEvaluator !=
null && m_lossyEvaluator.IsTriggeringEvent(loggingEvent)))
        {
         if (m_eventMustBeFixed)
                                        {
                // Derive class expects fixed events
                loggingEvent.Fix = this.Fix;  //// ***THIS IS WHERE THE
MDC VALUE IS CLEARED IN REMOTING**////
                                        }

// Not buffering events, send immediatly
        SendBuffer(new LoggingEvent[] { loggingEvent } );
                                }
                        } 
===========================================
I have set the buffersize to 1. So when SendBuffer is called when
remoting is used loggingEvent object does not have the property values
in it.
However when I use the adonetappender directly I don't get this problem.


The two properties I am setting are "User" and "Client" in my example.
Here is config file I use on the client side. I have commented out the
one of the appenders in the client side based on whether I do remoting
or direct adonetappender.
===================================================================


===================================================================
Here's the server side config. I have both LogFileAppender and
adonetappender configured. As I said before all the property values show
up correctly on the logfileappender during use of remoting.
========================================================================
====

        <log4net debug="true">
                <appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender">
                        <layout type="log4net.Layout.PatternLayout">
                                <param name="ConversionPattern"
value="%d [%t] %-5p %c %X{User} %X{Client} (%P{hostname}) [%x] - %m%n"
/>
                        </layout>
                </appender>
                <appender name="LogFileAppender"
type="log4net.Appender.FileAppender">
                        <param name="File" value="log-file.txt" />
                        <param name="AppendToFile" value="true" />
                        <layout type="log4net.Layout.PatternLayout">
                                <param name="Header" value="Reservation
Log File Initialized\r\n" />
                                <param name="Footer" value="Reservation
Log File Closed\r\n" />
                                <param name="ConversionPattern"
value="%d [%t] %-5p %c %X{User} %X{Client} (%P{hostname}) [%x] - %m%n"
/>
                        </layout>
                </appender>
                    <!-- ADONetAppender -->
    <appender name="ADONetAppender"
type="log4net.Appender.ADONetAppender"> 
         <bufferSize value="1" /> 
         <connectionType value="System.Data.SqlClient.SqlConnection,
System.Data, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" /> 
         <connectionString value="server=TWEB01\\RESGUI;
database=ResDevlDb;Integrated Security=Yes;persist security info=true"
/> 
         <commandText value="INSERT INTO Res_AppLog
([Date],[Level],[Logger],[User],[Message],[Exception],[Client]) VALUES
(@log_date, @log_level, @logger,@user, @message, @exception, @client)"
/> 
         <parameter>  
                <parameterName value="@log_date" />  
                <dbType value="DateTime" />  
                <layout type="log4net.Layout.RawTimeStampLayout" /> 
         </parameter> 
         <parameter>  
          <parameterName value="@log_level" />  
          <dbType value="String" />  
          <size value="50" />  
          <layout type="log4net.Layout.PatternLayout">   
                <conversionPattern value="%p" />  
          </layout> 
         </parameter> 
         <parameter>  
          <parameterName value="@logger" />  
          <dbType value="String" />  
          <size value="255" />  
          <layout type="log4net.Layout.PatternLayout">   
                <conversionPattern value="%c" />  
          </layout> 
         </parameter>
         <parameter>
          <parameterName value="@user" />  
           <dbType value="String" />  
           <size value="50" />  
           <layout type="log4net.Layout.PatternLayout">   
                <conversionPattern value="%X{User}" />  
           </layout> 
          </parameter>  
          <parameter>  
           <parameterName value="@message" />  
           <dbType value="String" />  
           <size value="4000" />  
           <layout type="log4net.Layout.PatternLayout">   
                <conversionPattern value="%m" />  
           </layout> 
          </parameter> 
          <parameter>  
           <parameterName value="@exception" />  
           <dbType value="String" />  
           <size value="2000" />  
           <layout type="log4net.Layout.ExceptionLayout" /> 
          </parameter>
                 <parameter>
          <parameterName value="@client" />  
           <dbType value="String" />  
           <size value="50" />  
           <layout type="log4net.Layout.PatternLayout">   
                <conversionPattern value="%X{Client}" />  
           </layout> 
          </parameter> 
         </appender>
                <root>
                        <level value="DEBUG" />
                        <appender-ref ref="LogFileAppender" />
                        <appender-ref ref="ADONetAppender" />
                </root>
        </log4net>
        <system.runtime.remoting>
                <application name="ResLoggingSvcs">
                        <!-- We need to define the remoting channels on
which we will publish
           the remote logging sink. -->
                        <channels>
                                <channel displayName="Server Channel"
ref="tcp server" port="8086" />
                        </channels>
                </application>
        </system.runtime.remoting>
=======================================================================


Thanks again!
Deep





-----Original Message-----
From: Nicko Cadell [mailto:[EMAIL PROTECTED] 
Sent: Friday, July 22, 2005 6:58 AM
To: Log4NET User
Subject: RE: Remoting and Adonetappender 

What do your 2 log4net configuration files look like?

In your receiving app what happens if you add a FileAppender that would
log the property values, for example:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="log-file.txt" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d %-5p %c %X{YourPropertyName} - %m%n" />
  </layout>
</appender> 

Nicko

> -----Original Message-----
> From: Deepanjan Ganguly [mailto:[EMAIL PROTECTED] 
> Sent: 21 July 2005 21:32
> To: Log4NET User
> Subject: Remoting and Adonetappender 
> 
> I am seeing a difference when I use remoting with 
> adonetappender. All values set with MDC (beta8 version) are 
> missing from the table. All the other fields are populated. 
> However when I use adonetappender directly all the mdc values 
> are being stored. 
> 
> Any idea why this might be happening?
> 
> Thanks
> 
> 


Reply via email to