Blog dedicado a la programación .NET y la informática en general

Archivo para diciembre, 2014

Logging en fichero de texto con Enterprise Library 6 y C#

Se plantea la posibilidad de guardar los sucesos de una aplicación en un fichero de texto.

Para ello se va a hacer uso de las librerías de Enterprise Library en su versión 6 mediante su módulo “Logging Application Block” y el ejemplo se ha realizado sobre Visual Studio 2012 en un proyecto WPF.

El primer paso es instalar las librerías mediante “NuGet” haciendo click con el botón derecho sobre el proyecto y seleccionando “Administrar paquetes NuGet”

Buscar por “EnterpriseLibrary” e instalar “Enterprise Library – Logging Application Block”.

Se instalará las librerías correspondientes a:

EnterpriseLibrary.Common

EnterpriseLibrary.Logging

De forma alternativa se puede instalar el paquete mediante la línea de comandos de NuGet ejecutando el siguiente comando:

PM> Install-Package EnterpriseLibrary.Logging

Ahora hay que configurar el fichero .config para que nos permita guardar los sucesos en un fichero de texto. Para esto tenemos tres posibilidades de edición. La primera y la segundas son las más laboriosas, la primera es editando directamente el fichero .config y la segunda realizarlo en tiempo de ejecución por código fuente, ambas según las directivas indicadas en la documentación:

http://msdn.microsoft.com/en-us/library/dn169621.aspx

La tercera forma, es la que os recomiendo si os acostumbráis a usar “Enterprise Library”, es descargando el software de gestión de ficheros de configuración que os encontraréis en la página web.

Nota: para la versión 5 es más fácil aún, ya que se puede instalar por NuGet el paquete “EnterpriseLibrary.Config” para VisualStudio y permite la edición del fichero .config desde el mismo proyecto haciendo click con el botón derecho del ratón sobre el proyecto que tenga instalada las librerías de Enterprise Library.

http://www.microsoft.com/en-us/download/details.aspx?id=38789

Basta con descargarse el fichero “EnterpriseLibrary6-binaries.exe”.

Dentro de este se encuentra el fichero con el nombre “Microsoft Enterprise Library 6.zip” que comprime los ensamblados que necesitaremos.

Ejecutar la aplicación “EntLibConfig.exe” (dando por supuesto que usáis un sistema operativo de 64 bits).

Abrimos el fichero de configuración del proyecto:

FileàOpen y buscar el fichero .config del proyecto en el que se ha instalado las librerías.

Añadir el bloque de configuración para el registrar los sucesos.

Por defecto introduce los registros en el visor de sucesos del sistema operativo. Se añade el soporte para el registro sobre un fichero de texto.

Hay dos opciones, registrarlo sobre un único fichero de texto plano o sobre varios. El segundo nos permite controlar cambiar el fichero de texto según la fecha o el tamaño que ocupe. En este ejemplo se trabajará sobre un único fichero de texto plano por ser más sencillo.

Ahora se debe asociar una configuración que de formato a los sucesos en el fichero. Para ello se reutilizará el que está definido para el visor de sucesos.

La configuración se finaliza cambiando el “listener” por defecto de las categorías “General” y “Logging Errors & Warnings”.

Se salvan los cambios y volvemos a Visual Studio para comprobar los cambios en el fichero de configuración.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    </configSections>
    <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
        <listeners>
            <add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                source="Enterprise Library Logging" formatter="Text Formatter"
                log="" machineName="." traceOutputOptions="None" />
            <add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                fileName="trace.log" formatter="Text Formatter" />
        </listeners>
        <formatters>
            <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                template="Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}"
                name="Text Formatter" />
        </formatters>
        <categorySources>
            <add switchValue="All" name="General">
                <listeners>
                    <add name="Flat File Trace Listener" />
                </listeners>
            </add>
        </categorySources>
        <specialSources>
            <allEvents switchValue="All" name="All Events" />
            <notProcessed switchValue="All" name="Unprocessed Category" />
            <errors switchValue="All" name="Logging Errors &amp; Warnings">
                <listeners>
                    <add name="Flat File Trace Listener" />
                </listeners>
            </errors>
        </specialSources>
    </loggingConfiguration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

Para usarlo en el código usaremos la clase estática “Logger”, pero previamente hay que asignarle el “TraceListener” por defecto. Por tanto es conveniente añadir un método que lo esteblezca en el inico del aplicativo, por ejemplo el constructor del archivo App.xaml para WPF o en Global.asax para ASP.NET o Program.cs en WindowsForms.

/// <summary>
/// Inicializa LAB en la aplicación para que se puedan registrar sucesos
/// </summary>
private void InicarLibreriaLog()
{
 IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
 LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
 Logger.SetLogWriter(logWriterFactory.Create());
}

Una vez que se tiene asignado el “Listener” se puede proceder a registrar los sucesos como se muestra acontinuación.

private void btnRegistrar_Click(object sender, RoutedEventArgs e)
{
 string suceso = this.txtSuceso.Text;
 Logger.Write(suceso);
 MessageBox.Show(&amp;quot;Suceso guardado&amp;quot;);
}

El suceso será almacenado en un fichero de texto que para la configuración que hemos establecido se llamará “trace.log” y estará ubicado en la carpeta “bin” del proyecto.

Anuncios

Publicar en WordPress desde Office 2013 / 2016 / 365

Pasos para publicar sobre WordPress con Office Word 2013. [A día 19/08/2018 sigue siendo válido para Office 365]

Lo primero de todo es averiguar si nuestra cuenta de WordPress tiene activada o no la autenticación en dos pasos. Esto se puede comprobar dentro de la edición del perfil, en la pestaña “Seguridad” en la página web de WordPress.


Si está desactivada entonces sólo deberás recordar tu usuario y clave para acceder desde Word, pero sino, entonces tendrás que generar una clave para que Word pueda identificarte. Para ello ves un poco más abajo en la pestaña de “Seguridad” de la página de WordPress y en la sección “Contraseñas de aplicación” escribe “Word” y te generará una clave que deberás guardar.


Segundo paso, abrir Word y en la pantalla de bienvenida elegir “Entrada de Blog”, en mi caso es la tercera opción.


Te pedirá que registres una cuenta de blog si no lo has hecho anteriormente. Dejo las capturas de pantalla para su registro.




Ilustración 1 Actualización 19/08/2018 Cambiar http por https

Recuerda que en “Contraseña” deberás poner la que se ha creado en WordPress para Word en caso de tener la autenticación en dos pasos.



Ahora ya podrás editar una nueva entrada en tu blog, ya que estará registrada la cuenta y podrás acceder a ella cuando lo desees.


Una vez escrito tu artículo guardarlo desde el siguiente menú:


Y listo, así es como he publicado este artículo.

Os dejo un vídeo en mi canal de YouTube.

A %d blogueros les gusta esto: