2010-04-29 18 views
6

¿Alguien sabe si es posible hacer el registro en SSIS (SQL Server Integration Services) a través de log4net? En caso afirmativo, ¿hay alguna sugerencia y peligro a tener en cuenta? ¿Cómo está la historia de despliegue?¿Cómo usar log4net como mecanismo de registro para SSIS?

Sé que la mejor solución para mi problema es no utilizar SSIS. La realidad es que, por mucho que odie esta tecnología POS, la empresa con la que trabajo fomenta el uso de estas aplicaciones en lugar de escribir código. Meh.

+0

Por qué no utilizar las muchas opciones integradas en SSIS para el registro? –

+0

No los he probado yo mismo. Pero los paquetes anteriores hechos por otras personas aquí generaron registros inútiles. Supongo que podría intentarlo por el momento, pero ser capaz de usar los poderes de l4n sería increíble. – enriquein

+0

Entonces, después de implementar el registro de SSIS en un archivo de texto, puedo concluir que 1) el formato es bastante feo. 2) la información importante siempre está al final de la línea. 3) el archivo de registro se sigue adjuntando, nunca se sobrescribe (que es lo que necesitamos). También siento que no es tan flexible como a uno le gustaría. Este es probablemente otro ejemplo de que Microsoft está pensando en lo que un cliente podría desear en lugar de preguntar directamente a los clientes qué es lo que realmente necesitan. – enriquein

Respuesta

3

Para responder a mi propia pregunta: es posible. No estoy seguro de cómo será nuestra historia de implementación, ya que esto se hará dentro de unas semanas.

Bastante tomé la información de estas fuentes y lo hice funcionar. Éste explica cómo hacer que los ensambles de referencia funcionen con SSIS, click here. Versión de TLDR: colóquela en el GAC y también copie el dll en la carpeta de su marco de destino. En mi caso, C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. Para configurar programáticamente log4net terminé usando this link como referencia.

Así es como mi código de configuración del registrador se ve como para la creación de un archivo con la fecha y hora en la que:

using log4net; 
using log4net.Config; 
using log4net.Layout; 
using log4net.Appender; 

public class whatever 
{ 
    private ILog logger; 
    public void InitLogger() 
    { 
     PatternLayout layout = new PatternLayout("%date [%level] - %message%newline"); 
     FileAppender fileAppenderTrace = new FileAppender(); 
     fileAppenderTrace.Layout = layout; 
     fileAppenderTrace.AppendToFile = false; 

     // Insert current date and time to file name 
     String dateTimeStr = DateTime.Now.ToString("yyyyddMM_hhmm"); 
     fileAppenderTrace.File = string.Format("c:\\{0}{1}", dateTimeStr.Trim() ,".log"); 

     // Configure filter to accept log messages of any level. 
     log4net.Filter.LevelMatchFilter traceFilter = new log4net.Filter.LevelMatchFilter(); 
     traceFilter.LevelToMatch = log4net.Core.Level.All; 
     fileAppenderTrace.ClearFilters(); 
     fileAppenderTrace.AddFilter(traceFilter); 

     fileAppenderTrace.ImmediateFlush = true; 
     fileAppenderTrace.ActivateOptions(); 

     // Attach appender into hierarchy 
     log4net.Repository.Hierarchy.Logger root = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root; 
     root.AddAppender(fileAppenderTrace); 
     root.Repository.Configured = true; 
     logger = log4net.LogManager.GetLogger("root"); 
    } 
} 

Esperamos que esto podría ayudar a alguien en el futuro o, al menos, servir de referencia si alguna vez necesito haz esto de nuevo

-2

Lo siento, no cavó lo suficiente. Hay 5 destinos diferentes en los que puede iniciar sesión, y 7 columnas que puede elegir incluir o no en su registro, así como entre 18 y 50 eventos diferentes que puede capturar al iniciar sesión. Parece que eligió el inicio de sesión predeterminado y lo descartó porque no funcionó para usted de la caja.
comprobar estos dos blogs para obtener más información sobre qué se puede hacer con el registro de SSIS: http://consultingblogs.emc.com/jamiethomson/archive/2005/06/11/SSIS_3A00_-Custom-Logging-Using-Event-Handlers.aspx
http://www.sqlservercentral.com/blogs/michael_coles/archive/2007/10/09/3012.aspx

+1

Antes de publicar mi respuesta, ya había probado el mecanismo de registro integrado y jugado con la personalización. Lo que no pensé fue usar los controladores de eventos para enriquecer esa funcionalidad. El enlace al blog de Jamie fue una lectura bastante interesante. Creo que voy a dar una oportunidad también para ser justo. Sin embargo, eso todavía no soluciona el problema con los archivos de registro que crecen fuera de control. Tampoco soluciona la posibilidad de cambiar dinamicamente la verbosidad del registro. Aún así, creo que el registro de SSIS podría ser útil para iniciar sesión en cualquier otro que no sean archivos. Gracias de nuevo por la sugerencia. – enriquein

Cuestiones relacionadas