Uploaded image for project: 'Log4net'
  1. Log4net
  2. LOG4NET-33

Ability to use global property to point to log4net configuration file

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.2.9
    • Fix Version/s: 1.2.10
    • Component/s: Core
    • Labels:
      None
    • Environment:
      Any

      Description

      The log4j tool has the ability to specify a system property to point to the logging configuration file. For instance, when starting a java program (such as tomcat), one can pass "-Dlog4j.configuration=http://mydomain/log4j.xml" as a command line parameter. Log4j checks to see whether this property is available and, if it is, uses the return value from the URL to configure categories and appenders.

      A similar mechanism in log4net would allow a few improvements in logging configuring:

      • No need to use the XmlConfiguratorAttribute in any assemblies
      • No need to know at design time where the log4net config file will be located
      • Ability to configure logging for all components in an app domain by setting a property in the app domain's config file
      • Ability to configure logging for all components on a machine by setting a property in the machine.config file
      • Ability to updating config file contents without updating app or machine config contents.

      I'd propose doing a direct mirror of the log4j capabilities into log4net as follows:

      • Update the LogManager class with a static constructor that mirrors the static block in the LogManager class in log4j
      • Use System.Configuration.ConfigurationSettings.AppSettings.Get(...) instead of java's System.getProperty(...)
      • Don't support the configuratorClass attribute (yet) because the XmlConfigurator seems to be the only logical choice
      • Don't implement the DEFAULT_XML_CONFIGURATION_FILE or DEFAULT_CONFIGURATION_FILE property checks (yet).
      1. configuration.xml.diff.txt
        29 kB
        patrick conant
      2. DefaultRepositorySelector.cs.diff.txt
        5 kB
        patrick conant
      3. LogManager.cs.diff.txt
        3 kB
        patrick conant

        Activity

        Hide
        patrick_conant patrick conant added a comment -

        This is a patch submittal including two files:

        • LogManager.cd.diff.txt is a unified diff file for the LogManager.cs file. The patch contains a new static constructor that attempts to retrieve log4net configuration file location from the application setting "log4net.configuration".
        • configuration.xml.diff.txt is a unified diff file for the configuration.xml XDoc source containing information on the new default initialization procedure. The contents of this added section are taken largely from http://logging.apache.org/log4j/docs/manual.html
        Show
        patrick_conant patrick conant added a comment - This is a patch submittal including two files: LogManager.cd.diff.txt is a unified diff file for the LogManager.cs file. The patch contains a new static constructor that attempts to retrieve log4net configuration file location from the application setting "log4net.configuration". configuration.xml.diff.txt is a unified diff file for the configuration.xml XDoc source containing information on the new default initialization procedure. The contents of this added section are taken largely from http://logging.apache.org/log4j/docs/manual.html
        Hide
        patrick_conant patrick conant added a comment -

        Resubmitted with license granted. Sorry about that.

        Show
        patrick_conant patrick conant added a comment - Resubmitted with license granted. Sorry about that.
        Hide
        patrick_conant patrick conant added a comment -

        Here's another stab at enabling an appSettings property to confingure log4net. The new approach uses the DefaultRepositorySelector to configure only the default repository. This still has the XmlConfigurator hard-coded.

        Show
        patrick_conant patrick conant added a comment - Here's another stab at enabling an appSettings property to confingure log4net. The new approach uses the DefaultRepositorySelector to configure only the default repository. This still has the XmlConfigurator hard-coded.
        Hide
        nicko Nicko Cadell added a comment -

        Added code to the DefaultRepositorySelector to look for the AppSetting 'log4net.Config' when configuring the default repository. If this AppSetting is specified then the value is loaded as a URI relative to the application base directory and used to try to configure the repository.

        Show
        nicko Nicko Cadell added a comment - Added code to the DefaultRepositorySelector to look for the AppSetting 'log4net.Config' when configuring the default repository. If this AppSetting is specified then the value is loaded as a URI relative to the application base directory and used to try to configure the repository.

          People

          • Assignee:
            nicko Nicko Cadell
            Reporter:
            patrick_conant patrick conant
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development