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 с регистрацией записи:

2023-06-28 23:03:12 - Проверка логирования

Примечание

Строковое форматирование с помощью оператора %:
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}"