2009-12-04 18 views
5

He estado trabajando un poco con log4net y he estado insertando campos adicionales, pero tengo problemas para agregar campos int. ¿Alguien podría mostrar una configuración donde se usa un int, ya que no he podido encontrarlo en su homepage?log4net y ints

que normalmente sólo tiene que utilizar una configuración como:

<parameter> 
     <parameterName value="@orderid" /> 
     <dbType value="string" /> 
     <size value="64" /> 
     <layout type="log4net.Layout.PatternLayout" /> 
    </parameter> 

pero sería más óptimo para la búsqueda en la base de datos de registro si este campo podría haber sido un int lugar.

Respuesta

4

El dbType property es del tipo System.Data.DbType. Allí, puede usar el valor Int32 para representar enteros.

+0

¿Qué hay de Char? ¡Gracias! No está listado allí. ¡Gracias! – Euridice01

+0

@ Euridice01 que serían cadenas de caracteres no unicode, use 'AnsiString' o' AnsiStringFixedLength'. –

16

El solo hecho de cambiarlo a Int32 no solucionó el problema. Para otros que buscan resolver este problema, aquí está la solución:

 <parameter> 
      <parameterName value="@UserID" /> 
      <dbType value="Int32" /> 
      <size value="32" /> 
      <layout type="log4net.Layout.RawPropertyLayout"> 
       <key value="UserID" /> 
      </layout> 
     </parameter> 

Esto también se ocupará de los nulos

+0

¡Gracias! Para los lectores futuros, esto recogerá los valores establecidos en log4net.GlobalContext también. En el ejemplo anterior (esta respuesta), si configura GlobalContext como "UserID" (donde UserID es la clave) y establece el valor, este código recuperará el valor. ¡¡y si!! los nulos son manejados ¡Gracias! – granadaCoder