Thanks Erich for your reply. I ended up removing the Commons abstraction layer. This allowed the "common" tags to be removed from the App.Config. I was able to stream down the other config (ie, the <log4net>...</log4net>) from the database (rather than config file) into the XmlConfigurator.
We're completely ok with sticking to the concrete log4net implementation so it was not an issue for us to remove the Common's abstraction layer. I suspect the Common's layer was looking in the <exe>.config file and I could not seem to find out how to tell common's to pull that information from a stream rather than to explicitly look for it in the configuration. Regards, Theron -----Original Message----- From: Erich Eichinger [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 25, 2007 3:53 AM To: Log4NET User Subject: RE: Is there a way to use log4net without the App.Config file all-together? Hi, Common.Logging is an abstraction layer that emerged from the iBatis project across Spring.NET into it's very own project at sourceforge and aims to decouple applications from concrete logging implementations such as log4net. You can find the online documentation and sources at http://netcommon.sourceforge.net/. To remove explicit log4net compile-time dependencies in your project but still use log4net for logging you need to do the following: 1) replace all log4net assembly references with Common.Logging references 2) replace "using log4net;" statements with "using Common.Logging;" 3) configure Common.Logging to use log4net as a concrete implementation. I suggest you extract your log4net configuration into an external file "log4net.config" and configure Common.Logging by <common> <logging> <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net"> <arg key="configType" value="FILE-WATCH" /> <arg key="configFile" value="~/log4net.config" /> </factoryAdapter> </logging> </common> This causes Common.Logging to configure log4net v1.2.10 using the specified configuration file and use log4net as concrete logging implementation. Beware that due to the changed public key from log4net version 1.2.9->1.2.10 there are also 2 versions Common.Logging.Log4Net.dll and Common.Logging.Log4Net129.dll hope this helps, Erich ________________________________ From: Rao Rapolu [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 25, 2007 10:33 AM To: Log4NET User Subject: RE: Is there a way to use log4net without the App.Config file all-together? Can you not encrypt the portion of log4net in App.config? ________________________________ From: Theron Kousek [mailto:[EMAIL PROTECTED] Sent: 23 April 2007 17:41 To: [email protected] Subject: Is there a way to use log4net without the App.Config file all-together? Hi All: Maybe you can point me in the right direction. I'm using .NET 1.1 and log4net 1.2. I was able to get log4net integrated into a WinForms application in C#. My manager asked if I could completely remove all log4net dependencies to the App.Config file. I was able to pull out all of the entries in between: <log4net> .... </log4net> (and now get them from a database row as a clob) and have them streamed into the XmlConfigurator.Configure(...). However, I discovered that I must still have the following in the App.Config: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="common"> <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> </sectionGroup> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <common> <logging> <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net"> <!-- choices are INLINE, FILE, FILE-WATCH, EXTERNAL--> <!-- otherwise BasicConfigurer.Configure is used --> <!-- log4net configuration file is specified with key configFile--> <arg key="configType" value="INLINE" /> </factoryAdapter> </logging> </common> </configuration> If I attempt to "pull out" the above from the app.config and "stream" it into the XmlConfigurator, the call to private static readonly ILog Log = LogManager.GetLogger(typeof(MainForm)); ends up returning an instance of Common.Logging.Simple.NoOpLogger rather than Common.Logging.Log4net.Log4NetLogger. Does anyone know of a way that I can completely do away with the Config file (as per my manager's request) and programmatically load the Log4net runtime with the data that would otherwise be contained in the App.Config "section data" section? Thanks in advance for any help!!! Theron Kousek Keefe Commissary Network Phone (314) 919-4172 Fax: (314) 919-4109 Email: [EMAIL PROTECTED]
