У меня есть пользовательская конфигурация для журналов в views.py
, как показано ниже:Джанго не пишут Бревна в файл
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Handlers
log_handlers = {
"terminal": logging.StreamHandler(),
"file_debug": logging.FileHandler("/var/log/eshot-api/{name}-{level}.log".format(name=__name__, level="DEBUG"), mode="w"),
"file_error": logging.FileHandler("/var/log/eshot-api/{name}-{level}.log".format(name=__name__, level="ERROR"), mode="w")
}
log_handlers["terminal"].setLevel(logging.INFO)
log_handlers["file_debug"].setLevel(logging.DEBUG)
log_handlers["file_error"].setLevel(logging.ERROR)
# Formatters
log_formatters = {
"terminal": logging.Formatter("[%(name)s]::[%(levelname)s]@[%(asctime)s]: %(message)s"),
"file_debug": logging.Formatter("[%(levelname)s]@[%(asctime)s]: %(message)s"),
"file_error": logging.Formatter("[%(asctime)s]: %(message)s")
}
for k, v in log_formatters.items():
log_handlers[k].setFormatter(v)
Я не создал каталог как /var/log/eshot-api
и дано разрешения как chmod 777
в этот каталог, так что не будет никаких проблема для письма.
Я также создал функцию, как показано ниже:
def initial_log(request, method):
logger.debug("{ip} requested {path} with {kwargs} in {method} method".format(ip=ipaddr(request), path=request.get_full_path(), kwargs=str(dict(request.GET)), method=method))
method
аргумент является строкой, чтобы пройти «GET» или «POST» для этой функции.
И я положил это в начале моей всей функции get
ClassBasedView
. Однако, когда я запускаю и обновляю страницу за пару раз, чтобы генерировать некоторые журналы и просматривать мои файлы журналов, они пусты.
И я хочу упомянуть, что это сервер разработки на моем собственном компьютере.
Environment
- Джанго 1.9.6
- убунту 14,04
- питон 3.5.1
Возможный дубликат [Почему запись в Django не работает] (http://stackoverflow.com/questions/36571284/why-django-logging-is-not-working). Также покажите нам свою конфигурацию 'LOGGING'. – solarissmoke