If its easily reproducible you can get the source code and debug the AdoNetAppender.
On Fri, Feb 21, 2014 at 5:48 PM, Tom Williams <[email protected]>wrote: > We're using log4net 1.2.11 to log to a SQL Server database from an > internal Windows service. For the most part, log4net is working very well > except for when SQL Server terminates the inactive log4net connection > overnight. > > > > I have the "reconnectonerror" property set to "true" in the log4net.config > file but the database connection doesn't appear to get re-established. > > > > Anyway, I found how to enable log4net internal debugging and when I enable > it, I get log messages but nothing from the AdoNetAppender. I can see the > AdoNetAppender being setup, but when I successfully log to the database > using the AdoNetAppender, I get nothing in the debug output. I also use a > RollingFileAppender to log messages generated by our Windows service and I > can see debug messages showing the log file getting rolled, per our > RollingFileAppender configuration settings. > > > > So, my questions are: > > > > 1) How can I get internal debug output from the AdoNetAppender? > > 2) What is the best way to debug failed attempts to reconnect to the > SQL Server database? > > > > We're connecting to SQL Server 2008 and when things do work, log messages > get logged in the database as desired. > > > > Here is a snipet from our app.config file, which enables internal log4net > debugging: > > > > -------------- START ----------------- > > > > <appSettings> > > ..... > > <add key="log4net.Internal.Debug" value="true" /> > > </appSettings> > > <system.diagnostics> > > <trace autoflush="true"> > > <listeners> > > <add name="textWriterTraceListener" > type="System.Diagnostics.TextWriterTraceListener" > initializeData="log4net-debug.log" /> > > </listeners> > > </trace> > > </system.diagnostics> > > > > -------------- END -------------------- > > > > That creates a "log4net-debug.log" file that contains lots of info, once > the Windows service has been running for a while. > > > > Here is a snipet from our log4net.config file, which defines our appenders: > > > > -------------- START ------------------ > > <?xml version="1.0" encoding="utf-8" ?> > > <configuration> > > <log4net> > > <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> > > <file value="service.log" /> > > <appendToFile value="true" /> > > <maximumFileSize value="100kb" /> > > <maxSizeRollBackups value="2" /> > > <layout type="log4net.Layout.PatternLayout"> > > <conversionPattern value="%date [%thread] %-5level %a %logger = > %message%newline" /> > > </layout> > > </appender> > > > > <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> > > <bufferSize value="1" /> > > <connectionType value="System.Data.SqlClient.SqlConnection, > System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken={some > string}" /> > > <connectionString value="{connection string for database connection}" > /> > > <commandText value="{SQL INSERT statement to log data}" /> > > <reconnectonerror value="true" /> > > > > <parameter> > > <parameterName value="@application" /> > > <dbType value="String" /> > > <size value="100" /> > > <layout type="log4net.Layout.PatternLayout"> > > <conversionPattern value="%appdomain" /> > > </layout> > > </parameter> > > > > (more parameters are defined similar to the above parameter) > > </appender> > > > > <root> > > <level value="DEBUG" /> > > <appender-ref ref="RollingFile" /> > > </root> > > > > <logger name="DBLog"> > > <appender-ref ref="ADONetAppender" /> > > </logger> > > </log4net> > > </configuration> > > --------------- END -------------------- > > > > So, with the above settings, when I first start the Windows service, the > log4net-debug.log file shows the creation of the appenders and it will > eventually show the rolling of the log file. I never see any messages from > the ADONetAppender showing it logging messages to the database. > > > > Thanks! > > > > Tom > > ------------------------------ > > * The information contained in this electronic mail message is > confidential information intended only for the use of the individual or > entity named above. The information herein may also be protected by the > Electronic Communications Privacy Act, 18 USC Sections 2510-2521. If the > reader of this message is not the intended recipient, you are hereby > notified that any dissemination, distribution or copying of this > communication is strictly prohibited. If you have received this > communication in error, please immediately notify us by e-mail and delete > the original message. In addition, to ensure compliance with requirements > imposed by the IRS, we inform you that any U.S. tax advice contained in > this communication (including any attachments) is not intended or written > to be used, and cannot be used, for the purpose of (a) avoiding penalties > under the Internal Revenue Code, or (b) promoting, marketing or > recommending to another party any matters addressed in this communication. > Thank you. * >
