Python Django应用程序记录器将日志记录到其他应用程序目录中

时间:2018-08-07 20:19:39

标签: python django logging

我有一个django项目,其中包含3个不同的应用程序(A,B,C)。

我在settings.py文件中按以下顺序加载应用程序:

INSTALLED_APPS = [ # Rest framework 'django_filters', 'django_apscheduler', 'rest_framework', 'corsheaders', # Project applications 'application_A.apps.ApplicationAConfig', 'application_B.apps.ApplicationBConfig', 'application_C.apps.ApplicationCConfig', ... ]

我在A,B和C中分别有一个logging.conf文件:

log_config.conf

[loggers]
keys=root,LogRunner

[handlers]
keys=consoleHandler, fileHandler

[formatters]
keys=logfileformatter

[logger_root]
handlers=fileHandler, consoleHandler
level=INFO
qualname=root
propagate=0

[logger_LogRunner]
handlers=fileHandler
level=INFO
qualname=nas_app_master
propagate=0

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

[handler_fileHandler]
class=handlers.RotatingFileHandler
level=INFO
args=('%(logfilename)s','a',500000,100,'utf8')
formatter=logfileformatter

[formatter_logfileformatter]
format=%(levelname)-10s | %(asctime)s | %(name)-25s | %(filename)-20s:%(lineno)3s | %(funcName)15s() | %(message)s

我使用自己编写的getLogger方法在每个单独的应用程序中实例化记录程序,该方法采用了类__name__(我的帮助程序方法可以正确获取应用程序和配置目录):< / p>

    config_file = get_config_directory() + 'log_config.conf'
    _log_url = get_app_root() + '/logs/' + log_file_name + '.log'
    logging.config.fileConfig(config_file, defaults={'logfilename': _log_url}, disable_existing_loggers=False)
    logger = logging.getLogger(log_class)  # logger for this module
    return logger

现在所有三个应用程序都具有相同的日志记录配置和相同的getLogger

我的问题 发生的情况是,有时将应用程序A的日志存储在\path\to\app_A\appA.log中,但是通常它们也存储在app_B\appA.log中。

为什么会这样?

每个应用程序都应该有自己的文件处理程序吗?调试时我注意到的一件事是,我在应用程序中实例化的每个记录器都没有自己的文件处理程序-因此它们默认为根记录器的文件处理程序

0 个答案:

没有答案