Log4Net по облачным решениям? - PullRequest
0 голосов
/ 26 июня 2019

Я хотел бы использовать Log4Net для решения Dynamics 365 (плагины и т. Д.)

Возможно ли это как-то - я не могу просто развернуть конфигурационный файл, я думаю, но есть ли способ сделать это в любом случае?

Моя мечта - объединить ведение журналов, разместить их в одном месте, независимо от того, являются ли они плагинами, интеграциями или другими функциями ...

1 Ответ

0 голосов
/ 26 июня 2019

Помимо использования файла конфигурации, Log4net может принимать свою конфигурацию из других источников, используя, например,.Stream или XmlElement.

Для этого вам необходимо использовать Log4net API через XmlConfigurator.Configure.
Важно не применять XmlConfiguratorAttribute;это либо одно, либо другое.

В приведенном ниже примере показано, как применить конфигурацию через XmlElement.
Содержимое этого XmlElement можно получить из любого места;жесткий код, встроенный файл ресурсов, запись из базы данных и т. д.

В конфигурации xml вы объявляете любые регистраторы, которые можно использовать в вашей среде Dynamics 365.

string xml = @"
    <log4net>
        <appender name='consoleAppender' type='log4net.Appender.ConsoleAppender' >
            <layout type='log4net.Layout.PatternLayout'>
                <conversionPattern value='%date | %logger | %level | %message | %exception%n' />
            </layout>
        </appender>
        <root>
            <level value='ALL' />
            <appender-ref ref='consoleAppender' />
        </root>
    </log4net>";

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlElement config = doc.DocumentElement;

ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly());
XmlConfigurator.Configure(repository, config);

ILog logger = LogManager.GetLogger("somelog");
logger.Debug("foobar");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...