Having a closer look at the documentation, the Properties property of the
LoggingEvent class is a PropertiesDictionary which derives from
ReadOnlyPropertiesDictionary which menas it can't be written to and hence
it's not suitable for my purposes.

Any ideas?


AdamTappis wrote:
> 
> Ross,
> 
> I guess that's why I'm posting here, because I'm trying to devise a
> pattern and some coding guidelines so that all our applications log
> consistently. I considered wrapping log4net but all I've read advises
> against that. So what I'm trying to achieve is an elegant solution that
> makes the best use of the framework.
> 
> You're right, I wish to log a collection of Key-Value pairs associated
> with a given loggin event. e.g.
> statistics -
> <eventData><duration>3ms</duration><size>10kb</size></eventData>
> details -
> <eventData><customerID>3</customerID><orderID>10</orderID></eventData>
> 
> The question I'm asking is how best to implement this with log4net?
> 
> Should I write a wrapper or a helper class that accepts the key-Value
> pairs collection as a parameter and returns a formattred XML string that
> then get's logged?
> 
> Maybe I should be creating a LoggingEvent in code manually, adding the
> Key-Value pairs to the Properties collection and then using
> ILog.Logger.Log to actually log the event rather than using Ilog.Info() to
> log. I could than write a custom layout class that serialises the
> properties out as an XML string.
> 
> like I said, I'm not sure and am looking for some disrection.
> 
> Ideally I would have the following interface available to me:
> 
> ILog.Info(string message, Dictionary customProperties)
> 
> and then it would be the configuration that drives how the
> customProperties are rendered by specifying the approporiate Layout class.
> That way I could format the customProperties to a file in one way and to a
> Db as XML etc... without embedding the formatting logic in my code.
> 
> 
> Ross Hinkley wrote:
>> 
>> Adam,
>> 
>> How are these properties getting transformed from a logging call to XML?
>> Are you asking if there's a way to modify a custom format on the fly and
>> then turn the custom properties into XML?  (I'm thinking of something
>> like
>> appending name-value pairs to the log format and having a custom appender
>> do
>> the XML conversion for you.  This doesn't seem terribly elegant.)
>> 
>> Maybe I'm over-trivializing, but it seems to me you should be able to use
>> custom properties to take care of your current needs, converting your
>> properties to XML in code, then modifying the ADO appender configuration
>> to
>> handle that property appropriately when the logging database is
>> implemented.
>> 
>> I guess another question would be what sorts of things need to be
>> serialized?  Are they going to be serialized from a class?
>> 
>> -Ross
>> 
>> On Mon, Aug 17, 2009 at 8:12 AM, AdamTappis <adamtap...@hotmail.com>
>> wrote:
>> 
>>>
>>> Hi,
>>>
>>> I've been evaluating log4net recently with a view to using the framework
>>> as
>>> a loggin standard for our enterprise applicaption. I see it very easy to
>>> extend the framework, however I have some specific logging requirements
>>> and
>>> I'm not sure what would be the easiest way implement these with minimal
>>> coding.
>>>
>>> At some time in the future, we aim to build a consolidated logging
>>> database
>>> that will capture logging data from our server application suite. The
>>> information that needs to be logged will differ per service/applicaption
>>> and
>>> to that end I would aim to have a table schema that has the standard
>>> logging
>>> columns plus a generic XML column (no defined schema) to act as a
>>> property
>>> bag for custom information associated with a specific event.
>>>
>>> We don't have time to develop the logging repository at present, however
>>> I'm
>>> stressing that we should build logging into our code from the start
>>> rather
>>> than trying to retro-fitting it later which would be far more costly.
>>>
>>> So I need my code to be able to fire off logging messages with a list or
>>> arbitrary custom properties that get formatted into an XML string. For
>>> now
>>> the messages can be written to a text file and later we'll configure and
>>> AdoNetAppender to write to out logging database.
>>>
>>> So my questions are:
>>> - Is this possible using configuration only? (I susopect not)
>>> - If not then which custom objects do I need to create? From what I've
>>> seen
>>> so far I think I'll need to code my own Layout Class
>>> - The ILog interface doesn't doesn't expose a method that takes a
>>> property
>>> bag (or dictionary), but it appears that the LoggingEvent object does.
>>> Does
>>> that mean I would have to make my logging calls using ILog.Logger.Log()?
>>> - Could someone provide some sample code please?
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Adding-custom-logging-properties-tp25006538p25006538.html
>>> Sent from the Log4net - Users mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Adding-custom-logging-properties-tp25006538p25008536.html
Sent from the Log4net - Users mailing list archive at Nabble.com.

Reply via email to