Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru? [RSS Feed]

#1 Май 17, 2022 09:37:05

VitaliiF
Зарегистрирован: 2022-05-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

Здравствуйте! Столкнулся с проблемой. Написал код при помощи loguru. Использовал функцию retention и устанавливал время очистки лога, ничего не срабатывает, как были записанные файлы с данными так и остались. Как понял, чтобы одновременно записывать файлы и их же удалять в одном коде, нужно использовать функцию close (закрыть файлы после записи) или with, но не получилось. Если кто понимает, что можно сделать с этим, пожалуйста помогите!

КОД прилагаю в файле.

Прикреплённый файлы:
attachment Loguru...py (766 байт)

Офлайн

#2 Май 17, 2022 11:04:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9957
Репутация: +  856  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

Опиши, как ты видишь процесс логирования в своей программе. Какие файлы, куда удалять, зачем удалять?



Отредактировано py.user.next (Май 17, 2022 13:27:21)

Офлайн

#3 Май 17, 2022 13:37:48

VitaliiF
Зарегистрирован: 2022-05-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

Смысл логгирования в программе заключается в том, чтобы записать текст кода в файл (zip, блокнот и т.д.) и после получив результат их нужно удалить или очистить, без разницы. Насчёт куда удалять непонял. Удалить нужно исходя из поставленного условия. Если простыми словами - запуск программы…запись первого файла…запись второго файла… запись третьего файла… и после их поочередное удаление.

Офлайн

#4 Май 17, 2022 13:57:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

VitaliiF
В вашем коде нет retention, покажите пожалуйста код (не надо его прилеплять файлом!!!) в котором вы используете retention



Офлайн

#5 Май 17, 2022 14:21:37

VitaliiF
Зарегистрирован: 2022-05-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

    
import time
from loguru import logger
logger.add("debug1.log", format="{time}  {level}  {message}", level="DEBUG", retention="30 seconds")
for _ in range(2):
    a = 5
    logger.debug(f"{a}")
    logger.info("Hello, World (info)!")
    logger.error("Hello, World (error)!")
    time.sleep(2)
logger.add("debug2.log", format="{time}  {level}  {message}", level="DEBUG", retention="50 seconds")
for _ in range(2):
    a = 6
    logger.debug(f"{a}")
    logger.info("Hello, World (info)!")
    logger.error("Hello, World (error)!")
    time.sleep(4)
logger.add("debug3.log", format="{time}  {level}  {message}", level="DEBUG", retention="70 seconds")
for _ in range(2):
    a = 7
    logger.debug(f"{a}")
    logger.info("Hello, World (info)!")
    logger.error("Hello, World (error)!")
    time.sleep(6)

Отредактировано FishHook (Май 17, 2022 15:27:33)

Офлайн

#6 Май 17, 2022 15:44:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

VitaliiF
все работает
запустите ваш пример, увидите три файла логов. Подождите минуту. Закомментируйте одну секцию

 import time
from loguru import logger
logger.add("debug1.log", format="{time}  {level}  {message}", level="DEBUG", retention="30 seconds")
for _ in range(2):
    a = 5
    logger.debug(f"{a}")
    logger.info("Hello, World (info)!")
    logger.error("Hello, World (error)!")
    time.sleep(2)
logger.add("debug2.log", format="{time}  {level}  {message}", level="DEBUG", retention="50 seconds")
# for _ in range(2):
#     a = 6
#     logger.debug(f"{a}")
#     logger.info("Hello, World (info)!")
#     logger.error("Hello, World (error)!")
#     time.sleep(4)
logger.add("debug3.log", format="{time}  {level}  {message}", level="DEBUG", retention="70 seconds")
for _ in range(2):
    a = 7
    logger.debug(f"{a}")
    logger.info("Hello, World (info)!")
    logger.error("Hello, World (error)!")
    time.sleep(6)

запустите код опять, увидите что файл debug2.log был удален



Отредактировано FishHook (Май 17, 2022 15:44:39)

Офлайн

#7 Май 17, 2022 16:21:45

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9957
Репутация: +  856  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

VitaliiF
Смысл логгирования в программе заключается в том, чтобы записать текст кода в файл (zip, блокнот и т.д.) и после получив результат их нужно удалить или очистить, без разницы.
Почему ты не можешь их удалять просто через os.remove() ?
  
#!/usr/bin/env python3
 
import time
import os
import loguru
 
loguru.logger.add(
    'file1.log',
    format='{time} {level} {message}',
    level='DEBUG')
 
for i in '123':
    loguru.logger.debug('Hello ' + i)
    time.sleep(10)
 
os.remove('file1.log')
 
loguru.logger.add(
    'file2.log',
    format='{time} {level} {message}',
    level='DEBUG')
 
for i in '456':
    loguru.logger.debug('Hello ' + i)
    time.sleep(10)
 
os.remove('file2.log')

VitaliiF
Насчёт куда удалять непонял.
Зачем писать логи, если ты их удаляешь сразу? Логи пишут обычно для того, чтобы читать их потом, когда найдётся время.

VitaliiF
Если простыми словами - запуск программы…запись первого файла…запись второго файла… запись третьего файла… и после их поочередное удаление.
Поочерёдность удаления ты можешь сделать через os.remove().

И зачем тебе это логер? Сделай свой логер, который пишет в заданный файл и может в любое время принимать в качестве аргумента любой файл, а не вводит тупую глобальную переменную, живущую до конца программы. Понимаешь, ты с этими тупыми логерами много независимых логеров не создашь. Они все привязываются к единой системе, которая обычно нахер не упала в большой модульной программе. Так эта тупая система ещё и долгое время поддерживала только старое форматирование строк и всё никак не могла ввести .format(), которому было уже несколько лет, тогда как .format() мощнее старого форматирования строк, потому что гораздо гибче. Когда все перешли на .format() со старых строк, эта херомантия logging требовала от строк только старый формат, который ограничен изрядно. В новом формате ты можешь переопределить метод __format__() и сделать вообще свой язык форматирования.
  
>>> class Int(int):
...     def __format__(self, spec):
...         if spec.startswith('repeat'):
...             return str(self) * int(spec[6:])
...         else:
...             return super().__format__(spec)
... 
>>> n = Int(4)
>>> s0 = '{:05d}'.format(n)
>>> s1 = '{:repeat5}'.format(n)
>>> s2 = '{:repeat8}'.format(n)
>>> 
>>> print(s0, s1, s2)
00004 44444 44444444
>>>



Отредактировано py.user.next (Май 17, 2022 16:38:16)

Офлайн

#8 Май 17, 2022 16:42:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

py.user.next
эта херомантия logging требовала от строк только старый формат
херомантия в общем-то не настаивает, подавай туда форматированные строки, ей пофигу. Сишный стиль форматирования используется в целях перформанса, питоний формат донельзя тормозной



Офлайн

#9 Май 17, 2022 16:46:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

которая обычно нахер не упала в большой модульной программе.
как раз там она и упала
py.user.next
Сделай свой логер,
и не забудь пропатчить фреймворки типа Джанги, которые внезапно тоже хотят чего-нибудь такого пологировать



Офлайн

#10 Май 18, 2022 05:10:42

VitaliiF
Зарегистрирован: 2022-05-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?

Большое спасибо всем за разъяснения!

Офлайн

  • Начало
  • » Центр помощи
  • » Как удалить файлы, записанные через промежутки времени в одном коде с помощью loguru?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version