登录内部目录与外部目录不同

时间:2018-08-01 10:00:42

标签: python python-3.x logging

我的项目结构是这样的:

|--projects
  |--scanner-app
    |--main.py

因此,如果我从scanner-appamine@amine ~/scanner-app $ python main.py)运行脚本,我将这样登录控制台:

2018-08-01 11:46:54,368 - root - INFO - Script Started

但是当我从projects目录(amine@amine ~/projects $ python scanner-app/main.py)运行脚本时,会收到以下信息:

INFO:root:Script Started

这是我的配置文件:

{
    "version": 1,
    "disable_existing_loggers": false,
    "formatters": {
        "simple": {
            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "simple",
            "stream": "ext://sys.stdout"
        },
        "info_file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "INFO",
            "formatter": "simple",
            "filename": "info.log",
            "maxBytes": 10485760,
            "backupCount": 20,
            "encoding": "utf8"
        },
        "error_file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "ERROR",
            "formatter": "simple",
            "filename": "errors.log",
            "maxBytes": 10485760,
            "backupCount": 20,
            "encoding": "utf8"
        }
    },
    "loggers": {
        "my_module": {
            "level": "ERROR",
            "handlers": ["console"],
            "propagate": "no"
        }
    },
    "root": {
        "level": "INFO",
        "handlers": ["console", "info_file_handler", "error_file_handler"]
    }
}

最后我调用json文件配置日志的功能:

def setup_logging(
        default_path='logging.json',
        default_level=logging.DEBUG,
        env_key='LOG_CFG'
):
    """Setup logging configuration

    """
    path = default_path
    value = os.getenv(env_key, None)
    if value:
        path = value
    if os.path.exists(path):
        with open(path, 'rt') as f:
            config = json.load(f)
        logging.config.dictConfig(config)
    else:
        logging.basicConfig(level=default_level)

我这样称呼我的功能:

setup_logging('logging.json', logging.DEBUG, 'LOG_CFG')

我有3个问题:

  1. 为什么我这里有两种日志?
  2. 在第二种情况下,当我在根目录之外运行脚本时 (scanner-app)我得到了一些额外的日志(一些 我使用的库)为什么会发生这种情况?
  3. 是否有可能像第一种情况一样加上日志 根目录内部和外部2种情况下的库?

0 个答案:

没有答案