Log 4Net и Unity 3d: работает в редакторе, а не как экспортированный исполняемый файл - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь использовать Log 4Net для входа в Unity 3D. Он работает в редакторе, но не работает вне редактора.

Я храню свой файл журнала 4net. xml в папке Assets. Чтобы указать журналу 4net, где его найти, я добавил следующую строку:

XmlConfigurator.Configure(new FileInfo($"{Application.dataPath}/log4net.xml"));

Это прекрасно работает в редакторе. Журналы записываются в каталог в Мои документы.

Затем я экспортировал свою игру для запуска вне редактора, и журнал больше не записывается и не создается. Вне редактора, используя procmon, я обнаружил, что он ищет файл журнала 4net. xml в папке GameName_Data, которая находится в той же папке, что и исполняемый файл. Как только я скопировал файл, procmon показал, что процесс загружает файл xml. Я поместил операторы log во встроенный регистратор Unity вокруг кода конфигурации log 4net, и они оба написаны, поэтому выполняется код инициализации. Самое странное, что procmon не показывает никаких попыток чтения или записи из того места, в которое я хочу записать журнал 4net. Как будто он даже не пытается писать в него.

Есть ли что-то особенное в среде Unity, которое могло бы ограничить это? Есть ли какой-то шаг, который я пропускаю?

Вот мои настройки для инициализации журнала 4net:

Debug.Log("About to load log4net");
log4net.GlobalContext.Properties["ATimeStamp"] = DateTime.Now.ToString("yyyyMMddHHmmss");
XmlConfigurator.Configure(new FileInfo($"{Application.dataPath}/log4net.xml"));
Debug.Log("Loaded to load log4net");

Вот текст моего журнала 4net. xml: https://gist.github.com/nikhilsinha/39548c2481507aeeea6a2f750e7dd24f

...