У меня чертовски много времени получается, что журнал 4net записывается в журнал событий Windows из скрипта Powershell. При запуске сценария в консоли PowerShell администратора с включенной внутренней отладкой я получаю:
log4net:ERROR [EventLogAppender] ErrorCode: GenericFailure. Unable to write to event log [Application] using source [Foo Source]
Я создал источник в начале сценария. Запись в журнал событий с помощью обычных командлетов Powershell выполняется успешно (например, https://devblogs.microsoft.com/scripting/how-to-use-powershell-to-write-to-event-logs/), но даже с созданным исходным кодом и сценарием, запущенным в административной консоли PowerShell, я получаю сообщение GenericFailure.
Код следующий:
[void][Reflection.Assembly]::LoadFrom((resolve-path "log4net.dll"))
[log4net.LogManager]::ResetConfiguration()
#Example of File Appender initialization
$FileApndr = new-object log4net.Appender.FileAppender((
[log4net.Layout.ILayout](new-object log4net.Layout.PatternLayout('[%date{yyyy-MM-dd HH:mm:ss.fff}] [%level] [%message]%n')),
(([System.IO.Directory]::GetParent($MyInvocation.MyCommand.Path)).FullName+'\LogOutputInConsoleAndFile.log'),
$True));
$FileApndr.Threshold = [log4net.Core.Level]::All
[log4net.Config.BasicConfigurator]::Configure($FileApndr)
$EventApndr = new-object log4net.Appender.EventLogAppender((
[log4net.Layout.ILayout](new-object log4net.Layout.PatternLayout('[%date{yyyy-MM-dd HH:mm:ss.fff}] %-5level %logger [%property{NDC}] - %message%newline'))
))
$EventApndr.Threshold = [Log4net.Core.Level]::All
$EventApndr.ApplicationName = "Foo Source"
$EventApndr.LogName = "Application"
[log4net.Config.BasicConfigurator]::Configure($EventApndr)
[log4net.Util.LogLog]::InternalDebugging = $true
$Log=[log4net.LogManager]::GetLogger("root");
$Log.Debug('Debug message.');
$Log.Info('Info message.');
$Log.Warn('Warn message.');
$Log.Error('Error message.');
$Log.Fatal('Fatal message.');
[log4net.LogManager]::ResetConfiguration();
Запись в текстовый файл работает правильно.
Спасибо,