<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://8j0rn.dagbok.ru/history/Python:DifferentScripts:LoggerTG?feed=atom</id>
	<title>Python:DifferentScripts:LoggerTG - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://8j0rn.dagbok.ru/history/Python:DifferentScripts:LoggerTG?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://8j0rn.dagbok.ru/history/Python:DifferentScripts:LoggerTG"/>
	<updated>2026-10-26T19:58:42Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://8j0rn.dagbok.ru/index.php?title=Python:DifferentScripts:LoggerTG&amp;diff=162&amp;oldid=prev</id>
		<title>8j0rn: Новая страница: «Очень удобный логер с разными уровнями, в случае ошибки или предупреждения оперативно сообщить на Телеграм, рутинную же информацию сохраняет в файл, если понадобится однажды для работы над ошибками.  &lt;syntaxhighlight lang=&quot;python&quot;&gt; import logging import os from dotenv import load_dotenv from pa...»</title>
		<link rel="alternate" type="text/html" href="https://8j0rn.dagbok.ru/index.php?title=Python:DifferentScripts:LoggerTG&amp;diff=162&amp;oldid=prev"/>
		<updated>2024-09-05T19:40:51Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Очень удобный логер с разными уровнями, в случае ошибки или предупреждения оперативно сообщить на Телеграм, рутинную же информацию сохраняет в файл, если понадобится однажды для работы над ошибками.  &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; import logging import os from dotenv import load_dotenv from pa...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Очень удобный логер с разными уровнями, в случае ошибки или предупреждения оперативно сообщить на Телеграм, рутинную же информацию сохраняет в файл, если понадобится однажды для работы над ошибками.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import logging&lt;br /&gt;
import os&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
from logging.handlers import RotatingFileHandler&lt;br /&gt;
import tg_logger&lt;br /&gt;
&lt;br /&gt;
# Загружаем переменные окружения из файла .env&lt;br /&gt;
dotenv_path = os.path.join(os.path.dirname(__file__), &amp;#039;.env&amp;#039;)&lt;br /&gt;
if os.path.exists(dotenv_path):&lt;br /&gt;
    load_dotenv(dotenv_path)&lt;br /&gt;
&lt;br /&gt;
# Telegram данные&lt;br /&gt;
token = os.getenv(&amp;quot;TELEGRAM_BOT_TOKEN&amp;quot;)&lt;br /&gt;
users = [os.getenv(&amp;quot;TELEGRAM_CHAT_ID&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
# Получаем имя скрипта и его путь&lt;br /&gt;
script_path = Path(__file__).resolve()&lt;br /&gt;
script_name = os.path.splitext(os.path.basename(script_path))[0]&lt;br /&gt;
log_dir = script_path.parent&lt;br /&gt;
log_file = Path(str(log_dir) + &amp;quot;/&amp;quot; + script_name + &amp;quot;.log&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Базовый логгер&lt;br /&gt;
logger = logging.getLogger(script_name)&lt;br /&gt;
logger.setLevel(logging.INFO)&lt;br /&gt;
&lt;br /&gt;
# Настройка обработчика для сохранения в файл&lt;br /&gt;
file_handler = RotatingFileHandler(log_file, maxBytes=1024*1024, backupCount=10)&lt;br /&gt;
file_handler.setLevel(logging.INFO)&lt;br /&gt;
file_handler.setFormatter(logging.Formatter(&amp;#039;%(asctime)s - %(name)s - %(levelname)s - %(message)s&amp;#039;))&lt;br /&gt;
logger.addHandler(file_handler)&lt;br /&gt;
&lt;br /&gt;
#Настройка обработчика для отправки в TG&lt;br /&gt;
t_handler = tg_logger.setup(logger, token=token, users=users, tg_format=&amp;quot;&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;%(name)s&amp;lt;/u&amp;gt; : %(levelname)s&amp;lt;/b&amp;gt;\n\n&amp;lt;code&amp;gt;%(message)s&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
t_handler.setLevel(logging.WARNING)&lt;br /&gt;
logger.addHandler(t_handler)&lt;br /&gt;
&lt;br /&gt;
logger.info(f&amp;quot;Hello from tg_logger by {script_name}&amp;quot;)&lt;br /&gt;
logger.warning(f&amp;quot;Test WARNING {script_name}&amp;quot;)&lt;br /&gt;
#logger.error(f&amp;quot;Test ERROR {script_name}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>8j0rn</name></author>
	</entry>
</feed>