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 to change the logging behavior?

When you have issues or when you want to get a more detailed knowledge about what went wrong, 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 for the logfile, please visit following appender:

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
In the following lines you see the Range Filter which is currently used. By changing the minimum level to “DEBUG” it would log debugging information to the log file.
<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:

ColoredConsoleAppender

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.

We are using a ColoredConsoleAppender, therefore you could also change 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.