-2

我正在尝试为我的 python 脚本创建一个日志包,允许我在 ELK 服务器上记录我的错误。问题是我无法创建我的 Logging 类的实例来获取脚本中存在的所有日志。

在我的包文件中,我设置了一个处理程序,允许我从脚本中检索所有事件。问题是我不能仅通过类 Logging 使用我的日志消息。当我的包中已经进行了调用时,我被迫在我的每个模块中使用 python 日志记录包。

包裹记录

import logging
class Logging:
    def __init__(self, module, scope, title):
        self.module = module
        self.scope = scope
        self.title = title

    def format_logs(self):
        # Configuration Logging
        logging.getLogger(__name__)
        logging.basicConfig(filename=FILE, format='%(asctime)s :: %(levelname)s :: %(message)s', datefmt='%m/%d/%Y %I:%M:%S', level=logging.DEBUG)

        # Setting up the listening file
        logging.FileHandler(FILE)

示例脚本

from packages.pkg_logs import Logging
import logging
def __init__(self, url):
    self.url = url
    self.init_log = Logging(self.url, SCRIPT, TITLE)
    self.set_handler = self.init_log.format_logs()
    logging.info("Starting script : %s on : %s" % (TITLE, url))

等待您的反馈以寻求解决方案。

4

1 回答 1

0

您必须从自定义日志管理器返回记录器实例。

例子:

日志管理器.py

class Logger:

    def __init__(filename):
        # set logging format
        logging.basicConfig()
        self.logger = logging.getLogger(filename=filename, format='set your custom format')
        # set up listening file
        self.logger.env=FILE

    def get_logger():
        return self.logger

脚本.py

from log_manager import Logger
logger = Logger().get_logger()
logger.info("message")

这应该可以正常工作。

除此之外,如果你想从项目的不同部分登录到同一个文件,你可以让 LogManager 成为一个单例类来返回一个单例对象并登录同一个文件。

于 2019-06-17T14:22:44.260 回答