[
https://issues.apache.org/jira/browse/LOG4NET-130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Bodewig updated LOG4NET-130:
-----------------------------------
Fix Version/s: 1.2 Maintenance Release
> AdoNetAppender fails to insert the correct timestamp when logging from a web
> service.
> -------------------------------------------------------------------------------------
>
> Key: LOG4NET-130
> URL: https://issues.apache.org/jira/browse/LOG4NET-130
> Project: Log4net
> Issue Type: Bug
> Components: Appenders
> Environment: C# web service running on Windows Server 2003 using the
> .Net 2.0 Framework.
> Reporter: Matthew Lee
> Fix For: 1.2 Maintenance Release
>
>
> I have a C# console application which calls a C# web service. Both
> applications are written under the .Net 2.0 Framework. Both applications are
> using a "global" xml configuration file, which is loaded via the
> XmlConfigurator. The configuration uses 2 appenders, the AdoNetAppender and
> the EventLogAppender.
> The "global" configuration file that I mentioned earlier is an xml file that
> is hosted by our local web server. Each application takes the configuration
> file from the URL specified. Then each application injects its own name in
> the ApplicationName section of the EventLogAppender. This is done so that
> the names in the EventLog are meaningful instead of having a GUID for the
> application name.
> The code looks like this:
> private static readonly log4net.ILog oLog =
> log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
> static int Main(string[] args)
> {
>
> /*******************************************************************/
> // Setup the log4net configuration. Here we'll use a cool trick.
> // Log4net can be setup to load it's settings from an xml document
> // which we'll get from a URL. This allows us to update the
> config
> // whenever we want to without redeploying individual programs.
>
> /*******************************************************************/
> XmlDocument oDoc = new XmlDocument();
> oDoc.Load(Properties.Settings.Default.log4net_config_url);
> foreach (XmlNode oNode in
> oDoc.SelectNodes("log4net/appender[@name='EventLogAppender']"))
> {
> if (oNode != null)
> {
> XmlAttribute oValueAttribute =
> oDoc.CreateAttribute("value");
> oValueAttribute.Value = oLog.Logger.Name.ToString();
> XmlNode oNameNode =
> oDoc.CreateNode(XmlNodeType.Element, "applicationName", "");
> oNameNode.Attributes.Append(oValueAttribute);
> oNode.AppendChild(oNameNode);
> }
> }
> log4net.Config.XmlConfigurator.Configure(oDoc.DocumentElement);
> The problems that I am having are that:
> 1. If the web service is not loaded in memory, the first call to the web
> service does not log anything to the database. I do, however, get events in
> the Application Event Log on the web server.
> 2. After the first call to the web service, on subseqent web service calls
> the AdoNetAppender inserts records with timestamps left over from the prvious
> call. So for example, if I call the web service for the first time at 1:22;
> nothing is inserted into the database from the web service. If my second
> call is at 1:26, the records that the web service inserts have a timestamp of
> 1:22. If I call the web service a 3rd time at 1:29, the records the web
> service insert have a timestamp of 1:26.
> 3. Changes to hosted XML file (which are then read by the XmlConfigurator)
> do not take effect until the web service is reloaded in IIS. I do have the
> [assembly: log4net.Config.XmlConfigurator(Watch = true)] flag set. But, I'm
> guessing that because the assembly stays loaded in IIS, this doesn't really
> have much effect.
> I suspect that the problems in #1 and #2 are defects of the AdoNetAppender.
> I suspect that problem #3 is something that I'll have to live with.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira