[
https://issues.apache.org/jira/browse/LOG4NET-253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Bodewig updated LOG4NET-253:
-----------------------------------
Fix Version/s: 1.2 Maintenance Release
> GetLogger creates rolling files even for the unreferenced files
> ---------------------------------------------------------------
>
> Key: LOG4NET-253
> URL: https://issues.apache.org/jira/browse/LOG4NET-253
> Project: Log4net
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 1.2.10
> Environment: Windows XP
> Reporter: Yves Bastiand
> Fix For: 1.2 Maintenance Release
>
>
> Hi,
> I have a C# solution that contains three executables. I have each of these
> three executables sharing the same log4net configuration file. At startup of
> each of the executable, they retrieve a logger (one logger per executable, as
> per configuration file further below). When one of the executable performs
> Log.GetLogger(<loggerName>), it creates all the rolling files instead of only
> the one rolling file that is referred to as appender-ref in the executable's
> logger configuration.
> For instance, when I startup my sending daemon executable, it performs
> Log.GetLogger("SendingDaemonLogger") which creates 3 files
> Log/RuleScheduler.txt, Log/NotificationGenerator.txt and
> Log/NotificationSender.txt instead of only the desired
> Log/NotificationSender.txt.
> Then when I startup another of the executables, for instance the rule
> scheduler daemon, this other process cannot write in Log/RuleScheduler.txt
> because it has been created and locked by the sending daemon process.
> I am guessing that there may be three different solutions to my problem:
> 1. The GetLogger should only create the rolling file appenders that are
> referenced in the config
> 2. I should have one config file per executable, this way each config file
> could list only one rolling file appender and starting each of the executable
> would not create the rolling files of the other daemons. I am however
> reluctant to do this because some of the configuration (SMTP appender,
> console appender) is shared between the daemons and I don't want to have
> duplicate copies to maintain. Unless there is a way to have a config file
> including another one?
> 3. Maybe there is a way to configure the rolling file so that concurrent
> access across processes is allowed? This solution still isn't perfect in my
> opinion because any of the daemons should not be creating the rolling files
> of some other daemons.
> Thanks in advance for your help!
> My configuration file is below:
> <?xml version="1.0" encoding="utf-8" ?>
> <log4net>
> <appender name="RuleSchedulerFileAppender"
> type="log4net.Appender.RollingFileAppender">
> <file value="Log/RuleScheduler.txt"/>
> <threshold value="INFO"/>
> <appendToFile value="true"/>
> <!-- For each month, keep up to 100 files of 10Mb within the month-->
> <rollingStyle value="Composite" />
> <datePattern value="yyyyMM" />
> <maxSizeRollBackups value="100" />
> <maximumFileSize value="10MB" />
> <!-- The latest log file has the greatest number -->
> <countDirection value="1" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%ndc [%thread] %date %-4timestamp %-5level
> %message (%method(), L%line %class) %newline%exception"/>
> </layout>
> </appender>
> <appender name="NotificationGeneratorFileAppender"
> type="log4net.Appender.RollingFileAppender">
> <file value="Log/NotificationGenerator.txt"/>
> <threshold value="INFO"/>
> <appendToFile value="true"/>
> <!-- For each month, keep up to 100 files of 10Mb within the month-->
> <rollingStyle value="Composite" />
> <datePattern value="yyyyMM" />
> <maxSizeRollBackups value="100" />
> <maximumFileSize value="10MB" />
> <!-- The latest log file has the greatest number -->
> <countDirection value="1" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%ndc [%thread] %date %-4timestamp %-5level
> %message (%method(), L%line %class) %newline%exception"/>
> </layout>
> </appender>
> <appender name="NotificationSenderFileAppender"
> type="log4net.Appender.RollingFileAppender">
> <file value="Log/NotificationSender.txt"/>
> <threshold value="INFO"/>
> <appendToFile value="true"/>
> <!-- For each month, keep up to 100 files of 10Mb within the month-->
> <rollingStyle value="Composite" />
> <datePattern value="yyyyMM" />
> <maxSizeRollBackups value="100" />
> <maximumFileSize value="10MB" />
> <!-- The latest log file has the greatest number -->
> <countDirection value="1" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%ndc [%thread] %date %-4timestamp %-5level
> %message (%method(), L%line %class) %newline%exception"/>
> </layout>
> </appender>
> <appender name="DebugConsoleAppender"
> type="log4net.Appender.ColoredConsoleAppender">
> <threshold value="ALL"/>
> <mapping>
> <level value="FATAL" />
> <foreColor value="White" />
> <backColor value="Red, HighIntensity" />
> </mapping>
> <mapping>
> <level value="ERROR" />
> <backColor value="Red, HighIntensity" />
> </mapping>
> <mapping>
> <level value="WARN" />
> <backColor value="Yellow, HighIntensity" />
> </mapping>
> <mapping>
> <level value="DEBUG" />
> <backColor value="Green" />
> </mapping>
> <mapping>
> <level value="INFO" />
> <foreColor value="White" />
> </mapping>
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%ndc [%thread] %date %-4timestamp %-5level
> %logger %message (%method(), L%line %class) %newline%exception" />
> </layout>
> </appender>
> <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
> <threshold value="ERROR" />
> <to value="[email protected]" />
> <from value="[email protected]" />
> <subject value="Alert in BioPACS notification server" />
> <smtpHost value="biomail04.biodoma04.bi.corp" />
> <bufferSize value="0" />
> <layout type="log4net.Layout.PatternLayout">
> <conversionPattern value="%ndc [%thread] %date %-4timestamp %-5level
> %logger %message (%method(), L%line %class) %newline%exception" />
> </layout>
> </appender>
> <root>
> <level value="ALL" />
> </root>
> <logger name="RuleSchedulerLogger" additivity="true">
> <level value="ALL"/>
> <appender-ref ref="SmtpAppender"/>
> <appender-ref ref="DebugConsoleAppender"/>
> <appender-ref ref="RuleSchedulerFileAppender"/>
> </logger>
> <logger name="NotificationGeneratorLogger" additivity="true">
> <level value="ALL"/>
> <appender-ref ref="SmtpAppender"/>
> <appender-ref ref="DebugConsoleAppender"/>
> <appender-ref ref="NotificationGeneratorFileAppender"/>
> </logger>
> <logger name="SendingDaemonLogger" additivity="true">
> <level value="ALL"/>
> <appender-ref ref="SmtpAppender"/>
> <appender-ref ref="DebugConsoleAppender"/>
> <appender-ref ref="NotificationSenderFileAppender"/>
> </logger>
> </log4net>
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira