log4.net.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="D:\work\ps-log4net\log\test.log"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5level] [%logger] [%username] - %message%newline"/>
</layout>
<Encoding value="UTF-8"/>
<param name="AppendToFile" value="true" />
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
</configuration>
sample.ps1
$appdir = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition) + "\";
$dllFile = $appdir + "log4net\log4net.dll";
Add-Type -Path $dllFile;
$xmlFile = $appdir + "log4net\log4net.xml";
$configFile = Get-Item $xmlFile;
[log4net.Config.XmlConfigurator]::Configure($configFile);
$logger = [log4net.LogManager]::GetLogger($script:myInvocation.MyCommand.Name);
$logger.Info("info");
$logger.Debug("debug");
$logger.Warn("warn");
$logger.Error("error");
$logger.Fatal("fatal");
try {
$a = 1 / 0;
}
catch [Exception] {
$logger.Error($_.ScriptStackTrace);
$logger.Error($_.exception);
throw $_;
}