Python日志转到标准输出,而不是指定的文件

Python日志转到标准输出,而不是指定的文件,python,django,python-2.7,Python,Django,Python 2.7,我一直在尝试在自己的脚本中使用Logger,现在通过ianalexander的优秀帖子使用django设置: 但在这两种情况下,同样的问题依然存在。我的错误消息会在标准输出中显示。启动服务器的命令行。而不是在提到的文件中。然而,有趣的是,这些文件是如何创建的。有人知道为什么这些文件会被打开但不会被写入吗 有趣的是,当我通过命令行调用自己的脚本时,这是不正确的,所以我很可能会用到django 这些是我的django设置,包括注释掉的部分和全部。非常感谢您的帮助 谢谢大家! LOGGING = {

我一直在尝试在自己的脚本中使用Logger,现在通过ianalexander的优秀帖子使用django设置:

但在这两种情况下,同样的问题依然存在。我的错误消息会在标准输出中显示。启动服务器的命令行。而不是在提到的文件中。然而,有趣的是,这些文件是如何创建的。有人知道为什么这些文件会被打开但不会被写入吗

有趣的是,当我通过命令行调用自己的脚本时,这是不正确的,所以我很可能会用到django

这些是我的django设置,包括注释掉的部分和全部。非常感谢您的帮助

谢谢大家!

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
        'datefmt' : "%d/%b/%Y %H:%M:%S"
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    },
},
# 'handlers': {
#     'file': {
#         'level': 'DEBUG',
#         'class': 'logging.FileHandler',
#         'filename': '/path/to/django/debug.log',
#     },
# },
'handlers': {
    'main_file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': 'django_main.log',
        'formatter': 'verbose'
    },
},

# 'filters': {
#     'special': {
#         '()': 'project.logging.SpecialFilter',
#         'foo': 'bar',
#     }
# },

# 'loggers': {
#     'django.request': {
#         'handlers': ['file'],
#         'level': 'DEBUG',
#         'propagate': True,
#     },
# },
'loggers': {
    'django': {
        'handlers':['main_file'],
        'propagate': True,
        'level':'DEBUG',
    },
    'jira4': {    ##MYAPP
        'handlers': ['main_file'],
        'level': 'DEBUG',
    },
}
}

根据请求,这是我为在django系统之外使用日志而编写的代码:

def set_logs(self, log_name = 'main_log', dir_name = 'logs', base_name = 'log'):

    print " .. . . SETTING LOGS!"
    this_logger = logging.getLogger(log_name)

    this_logger.setLevel(logging.DEBUG)  ## Basicallty all
    #logger.setLevel(logging.INFO)

    # create file handler which logs even debug messages
    fhe = logging.FileHandler('logs/tick_ERR.log')
    fhe.setLevel(logging.ERROR)

    fhw = logging.FileHandler(dir_name + '/' +base_name+ '_WARN.log', 'w')
    fhw.setLevel(logging.WARNING)

    fhc = logging.FileHandler(dir_name + '/' +base_name+ '_CRITICAL.log', 'w')
    fhc.setLevel(logging.CRITICAL)

    fhd = logging.FileHandler(dir_name + '/' +base_name+ '_DEBUG.log')
    fhd.setLevel(logging.DEBUG)

    fhi = logging.FileHandler(dir_name + '/' +base_name+ '_INFO.log')
    fhi.setLevel(logging.INFO)

    # create console handler with a higher log level
    # ch = logging.StreamHandler()
    # ch.setLevel(logging.ERROR)
    # create formatter and add it to the handlers
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s : %(message)s')
    fhe.setFormatter(formatter)
    fhw.setFormatter(formatter)
    fhc.setFormatter(formatter)
    fhd.setFormatter(formatter)
    fhi.setFormatter(formatter)

    # ch.setFormatter(formatter)
    # add the handlers to the logger
    this_logger.addHandler(fhe)
    this_logger.addHandler(fhw)
    this_logger.addHandler(fhc)
    this_logger.addHandler(fhd)
    this_logger.addHandler(fhi)

    return this_logger
然后我再打电话

    this_logger = logging.getLogger(log_name)

    print "Got logger: "
    pp.pprint(this_logger)


    this_logger.critical(test_flag + " __________________3__________ IS THI IN ALL ? ___________3_________")
    this_logger.critical(test_flag + " THIS IS CRITICAL!! ")

    this_logger.error(test_flag + " THIS IS A DARN ERROR!  ")

有趣的是,当我在一个本地文件中使用几乎相同的代码并通过cmd行调用时,它工作了。django环境的哪些方面不允许我编写,但允许我创建这些日志文件?

我尝试了您的代码,似乎需要修改记录器名称

在文件views.py的末尾放置是一个很好的做法

import logging
log = logging.getLogger(__name__)
在您的情况下,它将位于例如jira4.views.py中

this_logger = logging.getLogger(__name__)   # __name__ will produce jira4.views
如果您的应用程序名为jira4,那么日志应该开始正常工作


另请参见

能否显示一些代码?可能是您没有正确使用日志记录?非常感谢您阅读本文。这让我感到非常茫然!