Исключить (или отключить) предупреждения log4cplus при компиляции или запуске приложения PyQT4 GUI?

Я создал небольшое приложение с графическим интерфейсом пользователя с QtDesigner на Python и передал приложение нескольким людям в моей команде, которые используют Autodesk 360 + Autocad.

Мое приложение использует команду QFileDialog для получения имен файлов, что, как известно, содержит ошибку, когда на компьютере установлен Autodesk 360: ссылка 1, link2.

Ошибка: при вызове файлового диалога консоль всегда возвращает следующие ошибки:

log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
log4cplus:ERROR Please initialize the log4cplus system properly.

Ошибка не критична, так как она не меняет обработку, но я не хочу, чтобы какое-либо сообщение об ошибке появлялось таким образом.

Учитывая, что мы часто распространяем приложение среди людей, использующих продукты Autodesk ежедневно, и что ошибка не выглядит чем-то, что скоро будет исправлено, можно ли игнорировать эту ошибку, чтобы она не отображалась в консоли? Может быть, проигнорировав что-то во время сборки с _3 _... Я не знаю, где искать. Спасибо !


person kaycee    schedule 13.05.2016    source источник
comment
Вы используете консоль для любого другого ввода или вывода?   -  person Tom Myddeltyn    schedule 13.05.2016
comment
Да, консоль используется для получения QA от пользователя во время процесса и для отображения некоторых информационных журналов.   -  person kaycee    schedule 13.05.2016
comment
Вы можете поместить обработчик в stdout / stderr приложения и пропустить все, кроме определенных сообщений. Я не знаю, исходя из того, как настроена остальная часть вашего приложения.   -  person Tom Myddeltyn    schedule 13.05.2016
comment
Должен ли я поместить обработчик this в основную точку входа приложения (т.е. сценарий main.py, который скомпилирован py2exe)? У вас есть пример кода, как я могу отфильтровать эту ошибку?   -  person kaycee    schedule 13.05.2016
comment
comment
@ user3159253, как написано в исходном сообщении, Я НЕ хочу удалять Autodesk 360. Я ищу альтернативное решение ....   -  person kaycee    schedule 13.05.2016
comment
Что ж, тогда вы будете первым, кто отследит проблему до корня :) Будьте смелыми, пока я пишу более длинный комментарий.   -  person user3159253    schedule 13.05.2016
comment
@kaycee: Думали ли вы, что сообщить об этой проблеме в Autodesk?   -  person wilx    schedule 14.05.2016


Ответы (1)


Отказ от ответственности: не полный ответ, а подробное описание проблемы.

Проблема в том, что по крайней мере один из компонентов Autodesk 360, вероятно, AdSyncNamespace.dll, использует библиотеку log4cplus, но не предоставил для него правильную конфигурацию.

Согласно log4cplus: ОШИБКА в python при вызове диалогового окна файла tkinter даже @wilx, автор log4cplus еще в 2013 году не знал, как правильно исправить проблему.

По умолчанию log4cplus требует файл свойств в стиле java для загрузки конфигурации, поэтому я полагаю, AdSyncNamespace.dll может иметь такую ​​конфигурацию либо в файле, либо в разделе реестра Windows. Вы можете искать файлы, содержащие log4cplus. строки в папке установки Autodesk, и отслеживать, к каким ключам реестра осуществляется доступ, используя Посмотрите, к каким файлам / ключам реестра обращается приложение в Windows

Конечно, все это может показаться довольно скучным, и вы можете предпочесть более простое решение. Более простым решением было бы перенаправить STDERR вашего приложения в никуда, как описано здесь или здесь, но это может быть неподходящим для вашей программы, поскольку она использует консоль для вывода.

Обновление: вы можете попробовать установить переменную среды _4 _ = _ 5_ в своем приложении или даже глобально и проверить, помогает ли это. Также, если вам не нужен STDERR и вы выполняете весь «допустимый» вывод в консоль через STDOUT, вы можете попробовать просто закрыть STDERR или перенаправить его на nul, как описано в приведенных выше ссылках.

person user3159253    schedule 13.05.2016