我如何在后端存储服务器错误?

How can i store server errors in backend?

我正在处理在 tmux 会话中部署在 ec2 中的 django 项目。每当 api 抛出错误或给出内部服务器错误时,每次都很难在 tmux 中找到它。

我想知道是否有任何东西可以将这些错误存储在某个地方,比如 crashlytics 可以存储 api 错误,并且在一天结束时我可以分析它们并修复它们。

我想你想要的是AWS CloudWatch。不过我对 AWS 真的一无所知。

也许this artcile will help. Or this one.

我想如果你不想耦合到 AWS,你可以使用 Sentry 或类似的东西。

由于您在 AWS 内部工作,最透明的连接是将它们发送到 cloudwatch, you can do so by installing boto3 and watchtower

pip install watchtower boto3

然后定义Django logging settings。在这里你要注意 2 个部分,格式化程序指示你的日志消息将如何格式化。负责管理日志流的处理程序以及如何连接到它,在本例中为 AWS 通过 Boto3 会话。

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "aws": {
            "format": "%(asctime)s [%(levelname)-8s] %(message)s [%(pathname)s:%(lineno)d]",
            "datefmt": "%Y-%m-%d %H:%M:%S",
        },
    },
    "handlers": {
        "watchtower": {
            "level": "INFO",
            "class": "watchtower.CloudWatchLogHandler",
            "boto3_session": logger_boto3_session,
            "log_group": "DemoLogs",
            "formatter": "aws",
        },
        "console": {"class": "logging.StreamHandler", "formatter": "aws",},
    },
    "loggers": {
        "watchtower": {"level": "INFO", "handlers": ["watchtower"], "propogate": False,}
    },
}

这里有 Jordan Haines 的精彩教程:

https://dev.to/jordanahaines/django-and-cloudwatch-logging-in-a-place-you-can-see-3bc7