Hi Everyone,
We're using log4net 1.2.9 beta to log output from a Windows service.
We're experiencing a problem where it looks like log4net is hanging
during start-up, causing the service to timeout (we get an error message
saying "Error 1053: The service did not respond to the start or control
request in a timely fashion"). It's especially odd since it only seems
to happen every other time we try to start the service. That is, the
first time you try to start the service, it fails with the above error;
the second time, it starts up normally and everything runs as expected.
We're experiencing this problem on Windows XP (SP2) machines, running
version 1.1 of the .Net framework (with SP1 installed).
It seems to be dependent upon which appenders are added to the root
logger. The behaviour above is consistently reproduced when any of
FileAppender, ConsoleAppender, or TraceAppender is added. If the
EventLogAppender or no appender at all is attached, the service starts
up consistently (I haven't tried any of the other appenders).
I've included the output from DebugView, as well as our configuration
file, below. As you can see, on a failed startup the last thing that is
output is "XmlHierarchyConfigurator: Hierarchy Threshold []". On a
successful startup, the next line is the first of our program's debug
messages. Additional (non-log4net) debug messages suggest that during a
failed startup, everything works up until we try to output our first
message with log4net.
If it comes to it, we can get by with just using the event log appender,
but it would be nice to not have to worry about which appenders we can
and can't use.
Any help would be much appreciated.
John.
---------------- Debug output ---------------------
[3964] log4net: XmlHierarchyConfigurator: Configuration update mode
[Merge].
[3964] log4net: XmlHierarchyConfigurator: Logger [root] Level string is
[DEBUG].
[3964] log4net: XmlHierarchyConfigurator: Logger [root] level set to
[name="DEBUG",value=30000].
[3964] log4net: XmlHierarchyConfigurator: Loading Appender [Trace] type:
[log4net.Appender.TraceAppender]
[3964] log4net: PatternParser: Converter [message] Option [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [newline] Option [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: XmlHierarchyConfigurator: Setting Property
[ConversionPattern] to String value [%-5p %-6r [%t] %c{1} - %m%n]
[3964] log4net: PatternParser: Converter [p] Option [] Format
[min=5,max=2147483647,leftAlign=True]
[3964] log4net: PatternParser: Converter [literal] Option [ ] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [r] Option [] Format
[min=6,max=2147483647,leftAlign=True]
[3964] log4net: PatternParser: Converter [literal] Option [ [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [t] Option [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [literal] Option [] ] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [c] Option [1] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [literal] Option [ - ] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [m] Option [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: PatternParser: Converter [n] Option [] Format
[min=-1,max=2147483647,leftAlign=False]
[3964] log4net: XmlHierarchyConfigurator: Setting Property [Layout] to
object [log4net.Layout.PatternLayout]
[3964] log4net: XmlHierarchyConfigurator: Created Appender [Trace]
[3964] log4net: XmlHierarchyConfigurator: Adding appender named [Trace]
to logger [root].
[3964] log4net: XmlHierarchyConfigurator: Hierarchy Threshold []
---------------- Config File ----------------------
<log4net debug="true">
<!-- Console Logger -->
<appender name="Console"
type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %-6r [%t] %c{1} -
%m%n" />
</layout>
</appender>
<appender name="File" type="log4net.Appender.FileAppender">
<file value="logs/service-manager.log"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %-6r [%t] %c{1} -
%m%n"/>
</layout>
</appender>
<appender name="Trace" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %-6r [%t] %c{1} -
%m%n"/>
</layout>
</appender>
<appender name="EventLog"
type="log4net.Appender.EventLogAppender">
<applicationName value="D2L Service Manager"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG"/>
<levelMax value="FATAL"/>
</filter>
</appender>
<root>
<level value="DEBUG" />
<!--<appender-ref ref="Console" />-->
<!--<appender-ref ref="EventLog"/>-->
<!--<appender-ref ref="File"/>-->
<appender-ref ref="Trace"/>
</root>
</log4net>