Well, I think I got half of it figured out. It seems the XmlHierarchyConfigurator class does most of the grunt work of reading the xml configuration. I was hoping it was using some sort of deserialization, which would allow me to probably find a way to use serialization to save settings, but this is not the case. It seems to use the xml element names and find writable properties in the corresponding objects to write the values to. I could do the opposite, where I read through appenders, and where I find writable properties, write them to the xml, but I wouldn't want to write them all out. I should only write those out which are different from the default, so I'd have to compare the default to the actual and only write when they are different.
I think writing directly to the Xml file to make changes is going to be my best bet considering the small amount of changes I want to make. It just always seems dirty and risky to parse through xml manually. ----- Original Message ---- From: Duder Himer <[EMAIL PROTECTED]> To: Log4NET User <[email protected]> Sent: Tuesday, November 27, 2007 1:18:19 PM Subject: Re: Programmatically Change Configuration? Thanks Napo, That code would reload the configuration file, correct? I am wanting to change a specific setting, such as the Smtp host, and have that save to the configuration. Having a seperate configuration file is fine, and is probably a good idea. I was hoping to figure out how log4net manages to map xml elements to properties, and then I would attempt to reverse the process for saving the data. ----- Original Message ---- From: "Chen, Xuguang" <[EMAIL PROTECTED]> To: Log4NET User <[email protected]> Sent: Wednesday, November 21, 2007 8:24:30 PM Subject: RE: Programmatically Change Configuration? Message DIV { MARGIN:0px;} Hi,Snozz: I reset my log4net configuration in global.asax for asp.net project. string serverMapPath = Server.MapPath("~"); string configFile = serverMapPath + ConfigurationManager.AppSettings["Log4NetPath"]; log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(configFile)); Hope can help you. Napo.chen -----Original Message----- From: Duder Himer [mailto:[EMAIL PROTECTED] Sent: 2007年11月21日 4:36 To: [email protected] Subject: Programmatically Change Configuration? Is there a way to programmatically change the configuration through the log4net API? For example, when my application is run for the first time, I want to allow the user to provide their smtp host for the SmtpAppender, and have that information saved to the configuration. I'm trying to read through the log4net code the loads the configuration to see if there is something there I can make use of, but I'm getting a little lost. I am not familier with NUnit, thus I don't have the source setup to compile such that I can step though the code. So I am manually looking through the code, starting at the default XmlConfigurator.Configure() method, and jumping through the defines of the methods it calls. It gets really confusing when the GetRepository functions are using interfaces, and I have to figure out which implementation of that interface would actually be used so that I can look through the functions being called. Thanks in advance. -Snozz ____________________________________________________________________________________ Get easy, one-click access to your favorites. Make Yahoo! your homepage. http://www.yahoo.com/r/hs
