2012-05-21 2 views
2

в это время я пытаюсь войти в йоту L4N DB, это структура таблицы:Log4Net не работает с моими таможенными свойствами

[TcpClientTracer] 
[ID] [int] IDENTITY(1,1) NOT NULL, 
[Date] [datetime] NOT NULL, 
[Thread] [varchar](20) NOT NULL, 
[EventType] [varchar](20) NOT NULL, 
[ClientId] [int] NOT NULL, 
[ModemId] [varchar](128) NOT NULL, 
[EventText] [varchar](2000) NOT NULL 

, чтобы заполнить эту таблицу я использую этот Appender:

<appender name="TcpAdoNetAppender" type="log4net.Appender.AdoNetAppender,log4net"> 
    <bufferSize value="50" /> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <connectionString value="Data Source=[IPADDRES]; Initial Catalog=XYXY; User Id=username;Password=password" /> 
    <commandText value="INSERT INTO TcpClientTracer ([Date],[Thread],[EventType],[ClientId],[ModemId],[EventText]) VALUES (@log_date, @thread, @eventtype, @clientid, @modemid, @eventtext)" /> 
    <parameter> 
    <parameterName value="@log_date" /> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.RawTimeStampLayout" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="20" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@eventtype" /> 
    <dbType value="String" /> 
    <size value="20" /> 
    <layout type="log4net.Layout.RawPropertyLayout"> 
     <key value="eventtype" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@clientid"/> 
    <dbType value="Int32"/> 
    <layout type="log4net.Layout.RawPropertyLayout"> 
     <key value="clientid" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@modemid" /> 
    <dbType value="String" /> 
    <size value="128" /> 
    <layout type="log4net.Layout.RawPropertyLayout"> 
     <key value="modemid" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@eventtext" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.RawPropertyLayout"> 
     <key value="eventtext" /> 
    </layout> 
    </parameter> 
</appender> 

регистратор это:

<logger name="TcpClientTracer" additivity="false"> 
    <level value="ALL"/> 
    <appender-ref ref="TcpAdoNetAppender" /> 
</logger> 

и ... передать данные из C# Я использую этот метод:

public static void writeLog(GroupType mGrupo, Hashtable mValues) 
    { 
     ILog Logger = oLogger.GetLoggerByGroup(mGrupo); 

     Type declaringType = typeof(log4net.LogManager); 
     LoggingEvent loggingEvent = new LoggingEvent(declaringType, Logger.Logger.Repository, Logger.Logger.Name, Level.All, null, null);//null = Message, Exception    

     foreach (DictionaryEntry CurrentEntry in mValues) 
     { 
      loggingEvent.Properties[CurrentEntry.Key.ToString()] = CurrentEntry.Value; 
     } 
     Logger.Logger.Log(loggingEvent); 
    } 

Я не знаю, как работает LoggingEvent, но я использую его, чтобы заполнить другой стол и работать отлично. Если кто-то может помочь мне в этом вопросе, я рекомендую!

Спасибо, что прочитал мой плохой английский !!

ответ

3

Я не уверен на 100%, что вы просите. То, что я могу вам точно сказать, это следующее: если вы хотите регистрировать настраиваемые свойства, вам нужно написать что-то вроде этого: %property{YourProperty}. Пример:

<parameter> 
    <parameterName value="@clientid"/> 
    <dbType value="Int32"/> 
    <layout type="log4net.Layout.RawPropertyLayout"> 
     <key value="%property{clientid}" /> 
    </layout> 
</parameter> 
+0

Благодаря @Stefan Экли, я попробую ... – AuTi

+0

выглядеть результат L4N капелька вашей помощи: log4net: XmlHierarchyConfigurator: Установка недвижимость [Макет] объект [log4net.Layout.RawPropertyLayout] log4net: XmlHierarchyConfigurator: Установка коллекции недвижимости [AddParameter] объекта [log4net.Appender.AdoNetAppenderParameter] log4net: XmlHierarchyConfigurator: Установка недвижимости [ParameterName] для строкового значения [@clientid] log4net: XmlHierarchyConfigurator: Установка недвижимости [DbType] на значение DBTYPE [ Int32] log4net: ERROR XmlHierarchyConfigurator: не удается найти свойство [conversionPattern] для установки ob ject on [log4net.Layout.RawPropertyLayout] – AuTi

+7

На самом деле пример, который вы дали, не будет работать. Вы используете синтаксис «PatternLayout» с «RawPropertyLayout». С помощью 'RawPropertyLayout' вы просто используете имя свойства. – luksan

Смежные вопросы