Использование log4net в качестве механизма регистрации для служб SSIS? - PullRequest
6 голосов
/ 29 апреля 2010

Кто-нибудь знает, возможно ли ведение журнала в службах SSIS (службы интеграции SQL Server) через log4net? Если так, какие-либо указатели и подводные камни, чтобы быть в курсе? Как история развертывания?

Я знаю, что лучшее решение моей проблемы - не использовать SSIS. Реальность такова, что, хотя я ненавижу эту технологию POS, компания, с которой я работаю, поощряет использование этих приложений вместо написания кода. Мех.

Ответы [ 2 ]

3 голосов
/ 30 апреля 2010

Итак, чтобы ответить на мой собственный вопрос: это возможно. Я не уверен, какова будет наша история развертывания, поскольку это будет сделано через несколько недель.

Я в значительной степени взял информацию из этих источников и заставил ее работать. В этом разделе объясняется, как заставить ссылочные сборки работать с SSIS, нажмите здесь . Версия TLDR: поместите ее в GAC, а также скопируйте dll в папку вашей целевой платформы. В моем случае это C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727. Для программной настройки log4net я использовал эту ссылку в качестве ссылки.

Вот так выглядит мой код конфигурации регистратора для создания файла с отметкой времени:

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");
    }
}

Надеюсь, это может помочь кому-то в будущем или, по крайней мере, послужить справкой, если мне когда-нибудь понадобится сделать это снова.

0 голосов
/ 30 апреля 2010

Извините, вы недостаточно глубоко копали. Существует 5 различных пунктов назначения, в которые вы можете войти, и 7 столбцов, которые вы можете включить или не включить в свой журнал, а также от 18 до 50 различных событий, которые вы можете регистрировать при входе. Похоже, вы выбрали ведение журнала по умолчанию и отклонили его, потому что он не работал для вас из коробки.
Проверьте эти два блога для получения дополнительной информации о том, что можно сделать с ведением журнала служб 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...