Blog Calendar

July 2006
Sun Mon Tue Wed Thu Fri Sat
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Visitors Statistics

8
78
11330

July 2006

Configurando log4net almacenando en archivos.

Si alguna vez has realizado algun desarrollo y has tenido problemas al ponerlo en produccion sabras que no puedes debuguear en tu servidor de produccion o al menos es algo complicado realizarlo.
Para este tipo de problemas y sobre todo para una buena administracion de tu sistema es necesario que siempre tengas un log de las cosas que pasan. Recientemente implemente log4net con .NET en el trabajo y a continuacion pretendo poner unas pocas configuraciones que me han sido de ayuda.
  1. Descargar log4net de la siguiente liga: http://logging.apache.org/log4net/downloads.html
  1. Agregar el binario a las referencias, para esto buscamos la dll apropiada que se encuentra en el directorio bin del comprimido obtenido en el paso anterior. De acuerdo con el framework que se trabaje se navega en los directorios y encontraremos una dll y un archivo xml, dichos archivos los copiamos y pegamos en el directorio bin de nuestro proyecto. Si usas un IDE como MonoDevelop o VS solo basta darle boton derecho en el navegador de nuestra solucion y seleccionar agregar referencias.
  1. Para configurarlo se requiere agregar algo como lo siguiente en el archivo web.config si estas desarrollando un sitio web o en app.config si es una aplicacion:
<configuration>
  <configsections>
    <section type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"></section>
  </configsections>
 
  <log4net>
   
    <appender type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"></param>
      </layout>
    </appender>
   
    <appender type="log4net.Appender.RollingFileAppender">
      <param value="C:\\log\\MiLog.log"></param>
      <param value="true"></param>
      <param value="10"></param>
      <param value="1000"></param>
      <param value="Size"></param>
      <param value="true"></param>
      <layout type="log4net.Layout.PatternLayout">
        <param value="%d [%t] %-5p %-45c [%x] - %m%n"></param>
      </layout>
    </appender>
   
    <appender type="log4net.Appender.FileAppender">
      <param value="MiArchivoDeLogs.log"></param>      
     
      <param value="true"></param>
      <layout type="log4net.Layout.PatternLayout">
        <param value="%d [%t] %-5p %c [%x] - %m%n"></param>
      </layout>
    </appender>
   
    <root>
      <level value="INFO"></level>
     
    </root>
   
    <logger>
      <level value="INFO"></level>
     
    </logger>
  </log4net>
</configuration>
 
  1. Por ultimo se deben de agregar los namespaces en tu codigo
using log4net;
usgin log4net.Config;
 
o bien hacer referencia directa a cada metodo con su ruta absoluta. Para poder usar los metodos es necesario que se declare un objeto estatico y de solo lectura para almacenar la referencia al logger:
private static readonly ILog log = LogManager.GetLogger("NombreDelAppender");
 
Donde NombreDelAppender es el nombre que le has puesto al appender primario, en este caso ha sido "ConsoleAppender". O bien si agregaron el nodo logger como en el ejemplo, pueden usar:
private static readonly ILog log = LogManager.GetLogger("MiLogName");
 
Algo importante y que me causo un poco de dolor de cabeza es que no se menciona en la mayoria de los manuales que se tiene que mandar a llamar el metodo que configura el framework, esto se hace de la siguiente manera y se pone en el constructor de la clase.
XmlConfigurator.Configure();
 
Y despues podras usar los metodos del log (Debug, Info, Warning, Error, etc):
log.Debug("Iniciando aplicacion");
 
Para mas detalles de la configuracion pueden leer la documentacion.
http://logging.apache.org/log4net/release/manual/configuration.html
O bien usar este enlace que creo es mas explicito y contiene un ejemplo completo:
http://aspalliance.com/557
Mas adelante posteare una configuracion que hice para sql con SQL Server para aquellos que tengan dudas o interes al respecto. Por el momento es todo porque tengo algo de suenio.

Algo de JS

Ahora que esta de moda en la oficina irse al billar y para no dejar de lado la programacion aqui un hibrido entre ambas cosas face-wink.png
http://www.jimroos.com/2006/07/another-javascript-demo.html

Podcast de programacion

Me imagino que ya muchos conocen el termino de podcast, en dado caso que no pueden consultar el significado en la wikipedia tongue.png .
Ultimamente he estado escuchando algunos de ellos que me han parecido adecuados para quienes quieren aprender sobre programacion en .NET, a continuacion pongo la url para suscribirse con el iTunes:
http://feeds.feedburner.com/superneurona (SuperNeurona)
http://feeds.feedburner.com/pozotecnico/ (PozoTecnico)
O bien pueden dirigirse al blog de los autores:
http://www.pozotecnico.com/ (Carlos Madrigal)
http://www.superneurona.com/podcast/ (Raul Guerrero)
Para facilitarte la vida puedes usar un programa podcatcher. Los podcatchers, mientras los tengas prendidos, revisan periódicamente todos los podcasts a los cuales estes suscrito, si hay nuevos episodios, los descarga. En lo particular a mi me gusta el iTunes face-wink.png .
Si alguien esta interesado en realizar un podcast pueden dirigirse a la siguiente liga para ver como funciona:
http://utilidades.bitacoras.com/archivos/2005/09/13/como_hacer_un_podcast_gratis/
Como recientemente me han solicitado informacion referente a C#, tambien pongo algunos enlaces que pueden servir para que se documenten al respecto.
  • Mono y .Net
http://www.mono-project.com/Main_Page
http://www.go-mono.com/docs/
http://msdn.microsoft.com/netframework/
http://www.microsoft.com/spanish/msdn/arquitectura/das/distapp.asp
  • Manuales
http://www.programacion.com/tutorial/csharp/
http://www.mono-project.com/Introduction_to_developing_with_Mono
http://www.mono-project.com/Guide:Running_Mono_Applications
http://www.mono-project.com/Monkeyguide
http://unrealspace.com/cartuchoGL/NpgsqlUserManual.html
  • Portales
"C# Corner" (http://www.c-sharpcorner.com)
"C# Help"(http://www.csharphelp.com)
"C# Station" (http://www.csharp-station.com)
"Codehound C#" (http://www.codehound.com/csharp)
"csharpindex.com" (http://www.csharpindex.com)
"Developersdex" (http://www.developersdex.com/csharp)
".NET Wire" (http://www.dotnetwire.com)
  • Notas de interes
http://knocte.blogspot.com/2005/06/antifud-mononet.html
http://www.go-mono.com/docs/index.aspx
http://www.ajlopez.net/puntonet/
http://www.josanguapo.com/

Ya merito!!

Hace dos meses un vecino de la pension se fue a estados unidos y me trajo una portatil VAIO, si hubiera podido escojer tal vez hubiera pedido una TOSHIBA pero como el la compro con su tarjeta comentandonos nada mas las caracteristicas y las facilidades de pago, acepte sin miramientos.
Aqui una foto de Angy como la he bautizado. face-smile.png



Y bueno, esta quincena ya liquido por completo el costo de mi hija =).