python
June 28, 2023
Модуль логирования.
Задача: требуется из всех скриптов добавлять различные данные в лог файл.
Все скрипты будут использовать модуль логирования и вносить свои записи в систему регистрации событий.
#path/name mod/logging.py
import os
from datetime import datetime
def write_log(log_entry):
log_file_path = 'log/pylog.txt'
# Получаем путь к директории
log_directory = os.path.dirname(log_file_path)
# Проверяем, существует ли директория
if not os.path.isdir(log_directory):
# Создаем директорию, если она не существует
os.makedirs(log_directory)
# Проверяем, существует ли лог-файл
if not os.path.isfile(log_file_path):
# Создаем лог-файл с кодировкой UTF-8
with open(log_file_path, 'w', encoding='utf-8') as new_file:
pass # Создаем пустой файл
with open(log_file_path, 'r+', encoding='utf-8') as log_file:
current_logs = log_file.read()
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_entry_with_timestamp = f"{timestamp} - {log_entry}\n"
log_file.seek(0, 0)
log_file.write(log_entry_with_timestamp + current_logs)В скриптах указываем, что нужно записать в лог.
''' Вызываем модуль регистрации (логирования). И вносим запись "Проверка логирования" ''' from mod.logging import write_log # Вызов функции write_log с передачей значения log_entry log_entry = "Проверка логирования" write_log(log_entry)
В результате выполнения программы получим директорию/файл log/pylog.txt с регистрацией записи:
Примечание
Строковое форматирование с помощью оператора %:
variable1 = 10 variable2 = "hello" log_entry = "Variable 1: %d, Variable 2: %s" % (variable1, variable2)
Интерполяция строк с использованием символа f перед строкой и фигурных скобок для обозначения переменных:
python
variable1 = 10
variable2 = "hello"
log_entry = f"Variable 1: {variable1}, Variable 2: {variable2}"