создание логов в Django после обновления - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь реализовать регистратор в Django.У меня все это уже работало в Django версии 1.5 и Python 2.7.

Но когда я пытаюсь реализовать это в моей реальной версии (Django 2.0.8 и Python 3.6.5), я получаю сообщение об ошибке в следующем коде вthe manage.py:

import logging.config
import os
import sys
PROJECT_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(PROJECT_PATH)
os.environ["DJANGO_SETTINGS_MODULE"] = "ProjectServer.settings"

logging.config.fileConfig('ProjectServer/logging.ini')
try:
    import settings
except ImportError:
     import sys
     sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing. ")
     sys.exit(1)

if __name__ == "__main__":
     import django
     django.setup()

     from django.core.management import execute_from_command_line
     execute_from_command_line(sys.argv)

Исключение, которое я получаю:

Exception has occurred: TypeError
'>' not supported between instances of 'str' and 'int'
File "C:\path\ProjectServer\manage.py", line 10, in<module>
logging.config.fileConfig('ProjectServer/logging.ini')

Мой logging.ini:

[loggers]
keys=root

[handlers]
keys=consoleHandler, rotatingFileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler,rotatingFileHandler

[handler_consoleHandler]
class=logging.StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[handler_rotatingFileHandler]
class=logging.handlers.RotatingFileHandler
args=(r'c:\log\debug.log','maxBytes=1000000','backupCount=3')
level=INFO
formatter=simpleFormatter

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

Я действительно не понимаю, как этопришел бы к ошибке.Когда я проверял Pythonversion, я не заметил каких-либо изменений, касающихся ведения журнала.

После этого я импортирую запись в журнал и использую ее таким образом в своих моделях и представлениях

import logging

logger = logging.getLogger(__name__)

logger.info('error creating calendar file')

1 Ответ

0 голосов
/ 11 октября 2018

Оператор > в Python 2.7 может использоваться с двумя различными типами, такими как строка и целое число.Пример:

s = "xxx"
n = 123
s > n // will output True

В python3 эта операция недопустима.

TypeError: unorderable types: str() > int()

Оператор сравнения > подробно описан в документация Python

Кажется, что где-то в вашем коде вы пытаетесь сравнить строку с целым числом.

РЕДАКТИРОВАТЬ (после того, как OP опубликовал код)

Возникает проблема с operator > неподдерживаемыми аргументами,потому что ваша RotatingFileHandler установка maxBytes интерпретируется как строка вместо целого числа.Вы можете решить эту проблему, предоставив список аргументов RotatingFileHandler конструктора без использования ключевой нотации.Например:

[handler_rotatingFileHandler]
class=logging.handlers.RotatingFileHandler
args=(r'c:\log\debug.log', 'a', 1000000, 3)
level=INFO
formatter=simpleFormatter

Второй аргумент mode и по умолчанию равен 'a'. ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...