Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Logging - Allow external log4net config file #1378

Closed
ferventcoder opened this issue Aug 6, 2017 · 2 comments
Closed

Logging - Allow external log4net config file #1378

ferventcoder opened this issue Aug 6, 2017 · 2 comments

Comments

@ferventcoder
Copy link
Member

If choco finds a log file next to it by the name of log4net.config.xml (a little bit different on purpose), it will use that file instead of the built-in configuration for log4net. Use this with caution as it could cause certain logging items to disappear when the external config does not include the necessary logging sections. It may even cause choco to error.

@ferventcoder ferventcoder added this to the 0.10.8 milestone Aug 6, 2017
@ferventcoder ferventcoder self-assigned this Aug 6, 2017
ferventcoder added a commit that referenced this issue Aug 6, 2017
If choco finds a log file next to it by the name of `log4net.config.xml`
(a little bit different on purpose), it will use that file instead of
the built-in configuration for log4net. Use this with caution as it
could cause certain logging items to disappear when the external config
does not include the necessary logging sections. It may even cause
choco to error.
ferventcoder added a commit that referenced this issue Aug 6, 2017
* stable:
  (GH-1379) trace tracks deep logging info
  (GH-1378) allow external log4net config file
  (GH-1377) Fix: logger code location is wrong
  (GH-1376) capture output to additional log file
  (version) 0.10.8-beta
  (doc) update licensed changelog
  (GH-1331)(doc) Pass multiple sources
  (maint) Remove Nuget.Core from packages.config
  (maint) Skip nupkg backup if changed on upgrade
  (maint) Update AlphaFS to 2.1.3
  (maint) update NuGet.Core
@ferventcoder ferventcoder changed the title Allow external log4net config file Logging - Allow external log4net config file Aug 29, 2017
@ferventcoder
Copy link
Member Author

ferventcoder commented Feb 12, 2018

Start out by placing this: https://github.com/chocolatey/choco/blob/master/src/chocolatey/infrastructure/logging/log4net.config.xml as a file next to choco in $env:ChocolateyInstall (the choco.exe here is the one you want).

Then convert the ManagedColoredConsoleAppenders to just ConsoleAppenders. https://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_ConsoleAppender.htm

Something like (not fully tested out, but it appears to work):

<?xml version="1.0"?>
<!-- For colors that can be used with ManagedColoredConsoleAppender, see
     http://msdn.microsoft.com/en-us/library/system.consolecolor(v=vs.110).aspx 
-->
<log4net>
  <appender name="NormalLoggingColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="FATAL" />
    </filter>
  </appender>

  <appender name="ImportantLoggingColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="FATAL" />
    </filter>
  </appender>

  <appender name="VerboseLoggingColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="ERROR" />
      <param name="LevelMax" value="FATAL" />
    </filter>
  </appender> 
  
  <appender name="TraceLoggingColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="FATAL" />
      <param name="LevelMax" value="FATAL" />
    </filter>
  </appender>
  
  <root>
    <level value="DEBUG" />
  </root>

  <logger name="Important">
    <level value="DEBUG" />
    <appender-ref ref="ImportantLoggingColoredConsoleAppender" />
  </logger>  
  
  <logger name="Verbose">
    <level value="DEBUG" />
    <appender-ref ref="VerboseLoggingColoredConsoleAppender" />
  </logger>  
  
  <logger name="Trace">
    <level value="DEBUG" />
    <appender-ref ref="TraceLoggingColoredConsoleAppender" />
  </logger>

  <logger name="chocolatey">
    <level value="DEBUG"/>
    <appender-ref ref="NormalLoggingColoredConsoleAppender" />
  </logger>  
  
  <logger name="LogFileOnly">
    <level value="DEBUG"/>
  </logger>
</log4net>

NOTE: It's best NOT to rename the appenders as Chocolatey needs to use those names internally.

@ferventcoder
Copy link
Member Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants