powerevents:logging

Logging

powerEvents uses Apache log4net as core logging library, and additionally PostSharp Diagnostics for extended Debug logging.

By default, all the logs are stored in a logfile located in 'C:\Users\{USER}\AppData\Local\coolOrange\powerEvents\Logs\powerEvents.log' and it contains only Infos, Warnings and Errors.

The log4net settings file is located in C:\Program Files\coolOrange\Modules\powerEvents\powerEvents.log4net.
Further information about log4Net Configurations can be found here.

When you have issues with failing event execution or when you want to get a more detailed knowledge about what powerEvents or powerVault cmdlets are doing, you can increase the loglevel.

When changing the loglevel to DEBUG PostSharp Diagnostics will be enabled and will log all the function calls into the log files. This could cause performance issues

You can see, that there are multiple logging-Appenders used. If you want to change the logging level in the logfile, please visit following appender:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
In the following lines you see the LevelRangeFilter which is currently used. By changing the minimum level to “DEBUG”, log entries wih all the levels between the range Debug and Fatal will be written to the logfile.
<filter type="log4net.Filter.LevelRangeFilter">
	<levelMin value="INFO" />
	<levelMax value="FATAL" />
</filter>
In the line
<param name="File"
	   value="${LOCALAPPDATA}\coolOrange\powerEvents\Logs\powerEvents.log" />
you can configure the outputpath and name of the logfile.


powerEvents provides it's own PSHost, for which the logging can be configured in the section:

<logger name="coolOrange.Powershell">
</logger>
Following sections are used to control the logging behaviour for the powerVault Cmdlets:
<logger name="powerVault.Cmdlets">
	<level value="INFO" />
</logger>

powerShell IDEs like powerShell console (and powerShell ISE) are configured to show the logging levels in a different color.
In order to customize the logging level in the console window, visit following appender:

ColoredConsoleAppenders are working for powerShell IDE's that support console windows.

<appender name="ColoredConsoleAppender"
		  type="log4net.Appender.ColoredConsoleAppender">
In the lines
<filter type="log4net.Filter.LevelRangeFilter">
	<levelMin value="INFO" />
	<levelMax value="FATAL" />
</filter>
you can configure the required logging level. You could set the minimal filter level to “DEBUG”, than all the levels between the range Debug and Fatal will be logged.

This appender allows changing even the colors of the messages, depending on their log level:

<mapping>
	<level value="DEBUG" />
	<backColor value="White" />
</mapping>
<mapping>
	<level value="INFO" />
	<backColor value="Green" />
</mapping>
<mapping>
	<level value="WARN" />
	<backColor value="Yellow" />
</mapping>
<mapping>
	<level value="ERROR" />
	<backColor value="Red" />
</mapping>
<mapping>
	<level value="FATAL" />
	<backColor value="Red, HighIntensity" />
</mapping>

Troubleshooting

However the powerShell ISE currently does not support console logs at all.

When powerVault cmdlet's are getting used before importing the powerEvents module, not all the powerVault logging can be redirected to the logger configured in the according section.