Search code examples
c#configurationregistrylog4net

Using registry values in log4net configuration


Is it possible to put a registry value in the log4net filename in the configuration file?
for example, something like this:

<log4net>
    <appender name="MainLog" type="log4net.Appender.RollingFileAppender">
      <param name="Encoding" value="Unicode" />
      <param name="File" value="Logs\{Some-Registry-Value}\myLog.log" />
      <param name="AppendToFile" value="false" />
      <maximumFileSize value="50MB" />
      <maxSizeRollBackups value="20" />
      <rollingStyle value="Size"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%t] %logger - %m%n%exception" />
      </layout>
    </appender>

Solution

  • You can use a custom property in your xml so your line would look like:

      <param name="File" value="Logs\%property{RegLogPath}\myLog.log" />
    

    Then in code, before configuring log4net:

         log4net.GlobalContext.Properties["RegLogPath"] = logsFolder;