powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / NLog логирование из библиотеки dll
6 сообщений из 6, страница 1 из 1
NLog логирование из библиотеки dll
    #39006234
sevasel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ознакомительный пример с использованием NLog отрабатывает успешно. Произвожу те же самые действия в проекте dll - файлы логов не создаются. Что я делаю (не так):
1. С помощью NuGet Packages загружаю NLib 4.0.0.0.
2. using NLog;
3. Правлю NLog.config:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
  <targets>
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="f" />
  </rules>
</nlog>


5. Copy always
6.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    public class NLogTestLib 
    {
        public void Initialize()
        {
            Logger.Trace("logger.Trace");
            Logger.Debug("logger.Debug");
            Logger.Info("logger.Info");
            Logger.Warn("logger.Warn");
            Logger.Error("logger.Error");
            Logger.Fatal("logger.Fatal");
        }
        private Logger Logger
        {
            get
            {
                return LogManager.GetCurrentClassLogger();
            }
        }
    }


7. создаю тестовый exe, подключаю dll и
Код: c#
1.
2.
3.
4.
5.
6.
        private void TestRun_Click(object sender, EventArgs e)
        {
            NLogTestLib NLogTest = new NLogTestLib();
            NLogTest.Initialize();
            MessageBox.Show("Конец!");
        }



Но логи не создаются .
...
Рейтинг: 0 / 0
NLog логирование из библиотеки dll
    #39006477
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 1: конфигурить NLog в коде:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var config = new LoggingConfiguration();
var fileTarget = new FileTarget();
config.AddTarget("file", fileTarget);
fileTarget.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MyLogFile.txt");
fileTarget.Layout = "[${date:format=dd\\.MM\\.yyyy HH\\:mm\\:ss}] ${level} [${callsite}] ${message}";
fileTarget.CreateDirs = true;
fileTarget.KeepFileOpen = true;
config.LoggingRules.Add(new LoggingRule("*", level, fileTarget));
LogManager.Configuration = config;


Вариант 2: в app.config дать ссылку на конфиг NLog'а для библиотеки:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
    ...............
  </configSections>
  ..........
  <nlog configSource="ClassLibrary1.dll.config" />
</configuration>


ClassLibrary1.dll.config содержит весь целиком конфиг для NLog'а, и находится в той же папке, где и конфиг exe (атрибут configSource не поддерживает относительных и абсолютных путей).

Вариант 3: конфиг NLog'a определить как конфиг NLog'а для приложения, т.е. назвать MyApplication.exe.nlog. Он всё равно подцепится при вызове логирующих методов из dll. При этом к главному проекту (exe) даже не нужно референсить сам NLog.

Я предпочитаю использовать последний метод, далее по степени предпочтительности - второй. Первый - в самых экзотических случаях (например, параметры логирования конфигурируются в UI и сохраняются в пользовательских настройках).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
NLog логирование из библиотеки dll
    #39838363
RoAh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныВариант 3: конфиг NLog'a определить как конфиг NLog'а для приложения, т.е. назвать MyApplication.exe.nlog. Он всё равно подцепится при вызове логирующих методов из dll. При этом к главному проекту (exe) даже не нужно референсить сам NLog.

Добрый день!
Можно про этот вариант подробнее расписать?
Необходимо прикрутить к проекту (много DLL-ок), который запускается из уже готовой оболочки.
...
Рейтинг: 0 / 0
NLog логирование из библиотеки dll
    #39838404
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RoAhСон Веры ПавловныВариант 3: конфиг NLog'a определить как конфиг NLog'а для приложения, т.е. назвать MyApplication.exe.nlog. Он всё равно подцепится при вызове логирующих методов из dll. При этом к главному проекту (exe) даже не нужно референсить сам NLog.

Добрый день!
Можно про этот вариант подробнее расписать?
Необходимо прикрутить к проекту (много DLL-ок), который запускается из уже готовой оболочки.
А чего там подробнее? Создаете обычный конфиг NLog, называете его MyApplicationExeName.exe.nlog, кладете в ту же папку, что и MyApplication.exe - всё.
...
Рейтинг: 0 / 0
NLog логирование из библиотеки dll
    #39838574
RoAh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныА чего там подробнее? Создаете обычный конфиг NLog, называете его MyApplicationExeName.exe.nlog, кладете в ту же папку, что и MyApplication.exe - всё.
при запуске dll плагина через студию, с параметром start external program = MyApplication.exe, лог создается (впрочем как и просто с NLog.config), но уже при запуске MyApplication.exe самостоятельно и запуске из него приложения DLL, файл конфигурации нлог не подтягивается и лог не создается.
...
Рейтинг: 0 / 0
NLog логирование из библиотеки dll
    #39838583
RoAh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Частично логирование заработало. При инициализации модуля DLL, лог создался и появилась запись. Но при дальнейшей работе, пока не удается записать новые данные.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / NLog логирование из библиотеки dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]