Log4Net для Oracle -> PatternLayout завершается с ошибкой "converterType is null" - PullRequest
0 голосов
/ 14 января 2011

У меня запущено 15 параллельных процессов Powershell, поэтому я не могу войти в файл и не могу залить средство просмотра событий приложения. Вход в базу данных имеет смысл. Кажется, у меня общая проблема, но единственное решение, которое я нашел, - это вручную написать реализацию Log4Net, а не настроить простой файл конфигурации. Это звучит неправильно для меня. Я не могу представить, что нет никакого способа обойти эту проблему конфигурации, но, возможно, кто-то может указать мне более полный ответ.

Полное обсуждение вопроса существует по адресу: Social.Technet

Моя конфигурация соответствует спецификациям Apache для баз данных Oracle 9: Документы Apache Config

Первый параметр использует RawTimeStampLayout и работает как шарм. Второй параметр пытается использовать PatternLayout и завершается неудачно.

<parameter>
    <parameterName value=":log_date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
    <parameterName value=":message" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
    </layout>
</parameter>

Когда я пытаюсь добавить сообщение с помощью PatternLayout, я получаю:

log4net:ERROR XmlHierarchyConfigurator: Could not create Appender  [AdoNetAppender_Oracle] of type [log4net.Appender.AdoNetAppender]. 
Reported error follows.
System.ArgumentNullException: CreateConverterInstance cannot create instance, converterType is null
Parameter name: converterType

Точно так же, как и все остальные, если я использую RawPropertyLayout вместо PatternLayout, я больше не получаю сообщение об ошибке, но я только регистрирую значения NULL для этих полей.

Согласно обсуждению в Social.Technet, один из способов заставить регистрацию работать, это использовать код для создания таких параметров:

$param2 = New-Object log4net.Appender.AdoNetAppenderParameter
$param2.ParameterName = "@log_level"
$parm2Layout=New-Object log4net.Layout.PatternLayout("%level")
$param2.Layout = New-Object log4net.Layout.Layout2RawLayoutAdapter($parm2Layout)
$param2.DbType = "String"
$param2.Size = 50
$sqlAppender.AddParameter($param2)

Обратите внимание, что PatternLayout создается, а затем вручную подается в адаптер 2RawLayout. Похоже, что этот шаг отсутствует в процессе преобразования конфигурации.

Кто-нибудь знает лучший способ? У кого-нибудь есть рабочая конфигурация PowerShell-Log4Net-Oracle?

1 Ответ

1 голос
/ 17 июня 2011

Вы уверены, что не можете войти в файл? Для FileAppender есть конфигурация +MinimalLock, в которой log4net принимает блокировки только при добавлении. Приложение для файла log4net тоже чертовски быстрое .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...