the long way - extend ILogger with your needed functioality, and make the
facility return an instance of that insteadof instance of it's default
ILogger implementation

the short way - extension method on ILooger



On Sun, Mar 22, 2009 at 3:39 AM, Callum Hibbert <[email protected]>wrote:

> The "ThreadContext" will help, thanks.
> I don't see what extending ILogger would do for me, the Logging Facility is
> only ever going to give me a "Castle.Core.Logging.ILogger" instance (unless
> there some magic I am missing).
>
> I think I can work something out with log4net's ThreadContext.
>
> Cheers,
>
> Callum
>
>
> On Sat, Mar 21, 2009 at 10:37 PM, Ken Egozi <[email protected]> wrote:
>
>> if you're gonna use a specific Log4Net thing, why won't you simply extend
>> ILogger to have what you need?
>>
>> On Sun, Mar 22, 2009 at 12:33 AM, Ayende Rahien <[email protected]>wrote:
>>
>>> Use log4net's ThreadContext
>>>
>>>
>>> On Sat, Mar 21, 2009 at 5:57 PM, Callum Hibbert <
>>> [email protected]> wrote:
>>>
>>>> Can someone give me a pointer on how I can get the Event ID populated
>>>> when logging to the Event Log via the Logging Facility and log4net?
>>>> I understand how to do this if I own all the code but I'm having trouble
>>>> seeing an elegant way of passing a value for the Event ID when using the
>>>> Logging Facility. If I owned all the code I would have log4net log a
>>>> "LoggingEvent" as follows:
>>>>
>>>> LoggingEvent loggingEvent = new LoggingEvent(_caller,
>>>> _log.Logger.Repository, _log.Logger.Name, Level.Info, message,
>>>> exception);
>>>> loggingEvent.Properties["EventID"] = eventId;
>>>> _log.Logger.Log(loggingEvent);
>>>>
>>>> I thought about providing the Logging Facility with a custom factory
>>>> (which would provide my own logger) but I'm still bound to the "ILogger"
>>>> interface to which I can only really provide messages in text form, no hook
>>>> for an Event ID.
>>>>
>>>> There is the possibility of setting "EventID" property "globally" on
>>>> log4net before making the call to ILogger (and resetting after the call)
>>>> e.g.
>>>>
>>>> _log4netLogger.Logger.Repository.Properties["EventID"] = eventId;
>>>>
>>>> This is likely to leave me with threading/race conditions when two
>>>> widgets are logging at the same time.
>>>>
>>>> Anyone have any ideas for an elegant solution?
>>>>
>>>> Thanks very much,
>>>>
>>>> Callum
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>> --
>> Ken Egozi.
>> http://www.kenegozi.com/blog
>> http://www.delver.com
>> http://www.musicglue.com
>> http://www.castleproject.org
>> http://www.gotfriends.co.il
>>
>>
>>
>
> >
>


-- 
Ken Egozi.
http://www.kenegozi.com/blog
http://www.delver.com
http://www.musicglue.com
http://www.castleproject.org
http://www.gotfriends.co.il

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to