Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 3 / 0
Регистрация: 16.08.2013
Сообщений: 44

Игнорируется запись в лог и чтение конфигов

27.11.2020, 21:24. Показов 1353. Ответов 4

Студворк — интернет-сервис помощи студентам
Предыстория:
Есть класс А, в конструкторе которого которого происходит инициализация логера и загрузка конфигов.
Есть класс Б, который внутри в определенном методе создает и использует объект класса А
Есть класс С, в конструктор которого передается объект класса Б и используется там

Мистика:
Пишем1: а = А() - все шикарно, логи пишутся, конфиги грузятся
Пишем2: б = Б() и вызываю метод X, в котором есть а = А() - все шикарно, для А свои логи пишутся, свои конфиги грузятся
Пишем3: б = Б()
с = С(б)
Вызываю метод класса C, назовем ХХ, в котором вызывается метод X в котором есть а = А() -ВСЕ ПЛОХО.

Расследование
Иду в дебаг, смотрю. Все хорошо передалось, попадаю из С в метод Б, где есть строка с а = А() (идентичная Пишем1)). Оттуда попадаем в конструктор А. И тут начинают происходить очень странные дела. Логер инициализируется без ошибок, делает лог, о том что А стартовало.... но в файле с логами строка не появляется! Т.е. оно как бы делает, но как бы нет. Дальше - страньше. Конфиги, которые грузятся при простом создании объекта, просто не грузятся, config.sections() выдает []... опять же, без каких-либо ошибок до этого.... Если заменить загрузку конфига на хардкод и забить на конфиги, в остальном все работает на ура

Вопрос
Что это такое и что с этим делать? В питоне может есть какие-то фишки? Как вообще можно объяснить игнорирования строки
self.logger.debug("А was started")? При условии что это рабочий код, при простом создании объекта все работает как часы. То же самое с конфигом? Как можно при простом создании грузить, а при создании внутри клсса внутри класса уже просто игнорировать наличие файла, если ничего не менялось ни в коде, ни в расположении файла, только в месте вызова.



У кого есть идеи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2020, 21:24
Ответы с готовыми решениями:

Чтение stdout и периодическая запись в лог
коллеги всем привет. Ятолько начиаю изучать Питон и у меня вот какой вопрос возник.. Я хочу запустить некий баш скрипт корый в...

Вход в учётную запись игнорируется
Здравствуйте! У меня Access 2016. Подскажите пожалуйста почему после ввода в окно входа в учётную запись ника и пароля Access не...

Чтение из лог-файла
Здравствуйте! Есть задача - отследить запись в лог файл и проверить, какой именно текст записался. Для отслеживания изменения лога...

4
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.11.2020, 09:30
sonea, ты бы привел усеченный код (оставив только то, что касается проблемы). Нужно посмотреть как ты логируешь, в файл пишешь, как классы организованы... Засада в мелочи может быть.

Подозрение падает на
- в предке С (т.е. Б) - создается а = А()
- и в самом С - создается а = А()
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
28.11.2020, 09:59
Цитата Сообщение от sonea Посмотреть сообщение
Как вообще можно объяснить игнорирования строки
self.logger.debug("А was started")?
никак. Ты что-то делаешь не так. Пока интерпретатор не ИИ
Цитата Сообщение от sonea Посмотреть сообщение
У кого есть идеи?
без кода? тольк - ретроградный Меркурий
0
3 / 3 / 0
Регистрация: 16.08.2013
Сообщений: 44
28.11.2020, 23:24  [ТС]
Значит так, путем героических усилий был установлен корень зла. Делюсь результатами для завершения гештальта
Перед тем как создать объект А (в котором были проблемы с логами и т.д.), я вызываю вот какую функцию (раз в день архивируем)
Python
1
2
3
4
5
6
def archivate_processed_files(self):
        with ZipFile('processed_files.zip','a') as my_zip: 
            os.chdir(self.lines_path)#!!!!!!!!
            for file in glob.glob("processed_*.txt"): 
                my_zip.write(file)
                os.remove(self.lines_path+file)
Если не делать архивацию, то все ок. Если делать - не ок (конфиг не находит, логи не пишет)

И тут, собственно, все встало на свои места: os.chdir всему виной (логи по итогу писались именно в папку с файлами, а не туда, куда надо)
Если доработать функцию:
Python
1
2
3
4
5
6
7
8
9
    def archivate_processed_files(self):
       cur_dir = os.path.abspath(os.getcwd())#!!!
        with ZipFile('processed_files.zip','a') as my_zip: 
            os.chdir(self.lines_path)
            for file in glob.glob("processed_*.txt"): 
                my_zip.write(file)
                os.remove(self.lines_path+file)
                self.logger.info(file +" was added into archive")
            os.chdir(cur_dir)#!!!
то все работает.

Осталось у меня только два вопроса:
1. Я пыталась прописывать абсолютные пути к логу и конфигам и это не помогло... в моем мире, даже если os.chdir нашалил, у нас есть абсолютный путь и код ОБЯЗАН его найти. Не?
2. Изначально эти 3 класса были одним большим. И тогда все работало, хотя папка, в которой проводим архивацию, точно так же не совпадала с местом конфигов\логов... Почему, когда код был в одном большом классе, все работало , а при разбиении на 3 класса уже пошли какие-то странности?
0
3 / 3 / 0
Регистрация: 16.08.2013
Сообщений: 44
29.11.2020, 20:51  [ТС]
Так, ну поняла ответ на 2-й вопрос. Так то там был один логгер и один конфиг, которые благополучно грузились/инициализировались ДО os.chdir и все работало. Логично. Остается вопрос, почему, если передавать в логгер и конфигПрасер АБСОЛЮТНЫЕ пути, оно все же не находило
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.11.2020, 20:51
Помогаю со студенческими работами здесь

Чтение лог-файла, когда он занят
Здравствуйте. Есть лог файл, который постоянно пишеться (может быть по 5-6 записей за 1 мс.) Задача прочитать файл. Но вот он занят....

Чтение текстового лог-файла стороннего приложения
Доброе время суток! В наличие приложение (написанное еще в лохматом году, неизвестно кем на коленях), пишушее логи в текстовый лог-файл....

Запись в лог
Вопрос поднимала в рамках другой темы. Так как там это обсуждение не в тему, создала новую тему. Хотела уточнить. Хочу вносить...

Запись в лог
Короче парсю с сайта два параметра который на всей старанице встречаются. my $page = $ua->get("site")->as_string; ...

Запись в лог
Вывел phpinfo на страницу: 1. Html: 2. Картинкой - в приложенном файле (если кому удобнее). error_log задаy. Теперь убираю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru