# Создание именованного логгера;
# Сообщения лога должны иметь следующий формат: "<дата-время> <уровеньважности> <имямодуля> <сообщение>";
# Журналирование должно производиться в лог-файл;
# На стороне сервера необходимо настроить ежедневную ротацию лог-файлов.

# Журналирование обработки исключений try/except. Вместо функции print() использовать журналирование
# и обеспечить вывод служебных сообщений в лог-файл;
# Журналирование функций, исполняемых на серверной и клиентской сторонах при работе мессенджера.

import logging.handlers
import os
import sys

from server_config.settings import LOG_DIR, SERVER_LOG_FILE, ENCODING, LOGGING_LEVEL
sys.path.append('../')

# Определить формат сообщений
formatter = logging.Formatter("%(asctime)s %(levelname)s: %(filename)s: %(message)s")

# Создать регистратор верхнего уровня с именем 'client'
SERVER_LOG = logging.getLogger('server')
SERVER_LOG.setLevel(LOGGING_LEVEL)
SERVER_LOG.propagate = False

# Создать несколько обработчиков
FILE_PATH = os.path.join(LOG_DIR, SERVER_LOG_FILE)
# STREAM_HANDLER = logging.StreamHandler(sys.stderr)
LOG_FILE = logging.handlers.TimedRotatingFileHandler(FILE_PATH, when='D', interval=1, encoding=ENCODING)
LOG_FILE.setFormatter(formatter)

# Добавить несколько обработчиков в регистратор 'client'
SERVER_LOG.addHandler(LOG_FILE)
# SERVER_LOG.addHandler(STREAM_HANDLER)

if __name__ == '__main__':
    SERVER_LOG.debug(f'Test debug')
    SERVER_LOG.info('Test info')
    SERVER_LOG.warning('Test warning')
    SERVER_LOG.error('Test error')
    SERVER_LOG.critical('Test critical')

6ef2063de0d043341aa1a471c2544b04e87b8c11
<mask token>

<mask token>
sys.path.append('../')
<mask token>
SERVER_LOG.setLevel(LOGGING_LEVEL)
<mask token>
LOG_FILE.setFormatter(formatter)
SERVER_LOG.addHandler(LOG_FILE)
if __name__ == '__main__':
    SERVER_LOG.debug(f'Test debug')
    SERVER_LOG.info('Test info')
    SERVER_LOG.warning('Test warning')
    SERVER_LOG.error('Test error')
    SERVER_LOG.critical('Test critical')

<mask token>
sys.path.append('../')
formatter = logging.Formatter(
    '%(asctime)s %(levelname)s: %(filename)s: %(message)s')
SERVER_LOG = logging.getLogger('server')
SERVER_LOG.setLevel(LOGGING_LEVEL)
SERVER_LOG.propagate = False
FILE_PATH = os.path.join(LOG_DIR, SERVER_LOG_FILE)
LOG_FILE = logging.handlers.TimedRotatingFileHandler(FILE_PATH, when='D',
    interval=1, encoding=ENCODING)
LOG_FILE.setFormatter(formatter)
SERVER_LOG.addHandler(LOG_FILE)
if __name__ == '__main__':
    SERVER_LOG.debug(f'Test debug')
    SERVER_LOG.info('Test info')
    SERVER_LOG.warning('Test warning')
    SERVER_LOG.error('Test error')
    SERVER_LOG.critical('Test critical')

import logging.handlers
import os
import sys
from server_config.settings import LOG_DIR, SERVER_LOG_FILE, ENCODING, LOGGING_LEVEL
sys.path.append('../')
formatter = logging.Formatter(
    '%(asctime)s %(levelname)s: %(filename)s: %(message)s')
SERVER_LOG = logging.getLogger('server')
SERVER_LOG.setLevel(LOGGING_LEVEL)
SERVER_LOG.propagate = False
FILE_PATH = os.path.join(LOG_DIR, SERVER_LOG_FILE)
LOG_FILE = logging.handlers.TimedRotatingFileHandler(FILE_PATH, when='D',
    interval=1, encoding=ENCODING)
LOG_FILE.setFormatter(formatter)
SERVER_LOG.addHandler(LOG_FILE)
if __name__ == '__main__':
    SERVER_LOG.debug(f'Test debug')
    SERVER_LOG.info('Test info')
    SERVER_LOG.warning('Test warning')
    SERVER_LOG.error('Test error')
    SERVER_LOG.critical('Test critical')

# Создание именованного логгера;
# Сообщения лога должны иметь следующий формат: "<дата-время> <уровеньважности> <имямодуля> <сообщение>";
# Журналирование должно производиться в лог-файл;
# На стороне сервера необходимо настроить ежедневную ротацию лог-файлов.

# Журналирование обработки исключений try/except. Вместо функции print() использовать журналирование
# и обеспечить вывод служебных сообщений в лог-файл;
# Журналирование функций, исполняемых на серверной и клиентской сторонах при работе мессенджера.

import logging.handlers
import os
import sys

from server_config.settings import LOG_DIR, SERVER_LOG_FILE, ENCODING, LOGGING_LEVEL
sys.path.append('../')

# Определить формат сообщений
formatter = logging.Formatter("%(asctime)s %(levelname)s: %(filename)s: %(message)s")

# Создать регистратор верхнего уровня с именем 'client'
SERVER_LOG = logging.getLogger('server')
SERVER_LOG.setLevel(LOGGING_LEVEL)
SERVER_LOG.propagate = False

# Создать несколько обработчиков
FILE_PATH = os.path.join(LOG_DIR, SERVER_LOG_FILE)
# STREAM_HANDLER = logging.StreamHandler(sys.stderr)
LOG_FILE = logging.handlers.TimedRotatingFileHandler(FILE_PATH, when='D', interval=1, encoding=ENCODING)
LOG_FILE.setFormatter(formatter)

# Добавить несколько обработчиков в регистратор 'client'
SERVER_LOG.addHandler(LOG_FILE)
# SERVER_LOG.addHandler(STREAM_HANDLER)

if __name__ == '__main__':
    SERVER_LOG.debug(f'Test debug')
    SERVER_LOG.info('Test info')
    SERVER_LOG.warning('Test warning')
    SERVER_LOG.error('Test error')
    SERVER_LOG.critical('Test critical')
