如何让 nginx/gunicorn 使用结构化日志记录?

2024-03-20

我目前看到

172.19.0.1 - - [09/Feb/2018:07:00:32 +0000] "GET /ping HTTP/1.1" 200 1 "-" "curl/7.47.0"

在我的日志中,但我使用像这样的结构化日志记录 https://stackoverflow.com/a/48202500/562769.

我什至尝试过

ch = logging.StreamHandler()
ch.setFormatter(pythonjsonlogger.jsonlogger.JsonFormatter())
logging.getLogger("urllib3").addHandler(ch)

但我仍然看到那些消息。我有像这样的 nginx/gunicorn (source https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/container/decision_trees/serve):

nginx = subprocess.Popen(['nginx', '-c', '/opt/program/nginx.conf'])
gunicorn = subprocess.Popen(['gunicorn',
                             '--timeout', str(model_server_timeout),
                             '-k', 'gevent',
                             '-b', 'unix:/tmp/gunicorn.sock',
                             '-w', str(model_server_workers),
                             'server.wsgi:app'])

我想这就是日志消息的来源。但我不知道如何在那里进行结构化日志记录。


找到了。我必须编辑nginx.conf:

Within http:

log_format structured '{"remote_addr": "$remote_addr", "remote_user": "$remote_user", "request": "$request", "status": $status, "body_bytes_sent": $body_bytes_sent, "http_referer": "$http_referer", "http_user_agent": "$http_user_agent"}';

并在之内http > server:

access_log /dev/stdout structured;

See http://nginx.org/en/docs/http/ngx_http_log_module.html http://nginx.org/en/docs/http/ngx_http_log_module.html

现在消息看起来像这样:

{
    "remote_addr": "10.32.0.2",
    "remote_user": "-",
    "request": "GET /ping HTTP/1.1",
    "status": 200,
    "body_bytes_sent": 1,
    "http_referer": "-",
    "http_user_agent": "AHC/2.0"
}

仍然待办事项

如果请求是这样就好了

{"method": "GET",
 "endpoint": "/ping",
 "protocol": "HTTP/1.1"}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 nginx/gunicorn 使用结构化日志记录? 的相关文章

  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject

随机推荐

  • 自定义 ASP.NET 身份

    我正在使用 Identity Server 4 并且已自定义 ASP NET Identity 用户 如下所示 public class ApplicationUser IdentityUser MaxLength 100 public v
  • Java 默认版本在 PATH 更改后不反映

    我当前正在 Java 1 7 0 17 64 位版本上运行 我想使用 Java 32 位版本启动一个应用程序 我更新了 PATH 变量以指向 C Program Files x86 Java jre7 bin Java 32 位版本 然后做
  • 如何在不设置内置错误的情况下触发 mat-date-range-input 的 mat-form-field 中 mat-error 的显示?

    根据问题 我有一个日期范围选择器start and end日期作为mat form field 我想执行自定义验证 例如 确保之间的绝对差异start and end不超过 15 天 并显示mat error在 的里面mat form fi
  • Groovy - 如何延迟 Groovlet 修改重新编译检查

    我是 Groovy 的新手 我正在考虑使用 Groovlets 不是 GRAILS 来替换一些 Servlet 如果我更改 Groovlet 的脚本文件 Groovlet 会重新编译并自动获取更改 包括从 Groovlet 引用的脚本 这对
  • 具有离散值的圆形 SeekBar

    我正在尝试创建一个具有离散非线性值的圆形搜索栏 我还希望这些值出现在圆圈之外 我从 GitHub 上查看了多个版本 其中最有希望的是JesusM https github com JesusM HoloCircleSeekBar但是 我想不
  • Emacs 是否可以运行位于远程服务器上的 Matlab shell?

    我希望能够使用 Matlab 模式 matlab el 来运行 matlab shell 唯一的问题是 Matlab 位于远程主机上 这可能吗 如果是这样 请解释一下 我现在正在和流浪汉玩 但没有成功 Thanks 我刚刚尝试通过 ssh
  • Task.Factory.StartNew 与 Task.Factory.FromAsync

    假设我们有一个 I O 绑定方法 例如进行数据库调用的方法 该方法可以同步和异步运行 那是 Sync IOMethod Async BeginIOMethod EndIOMethod 那么当我们以如下所示的不同方式执行该方法时 在资源利用率
  • 非平凡可复制类型的 C++ 值表示

    C 标准的当前草案 2019 年 3 月 有以下段落 basic types p 4 强调我的 T 类型对象的对象表示是 T 类型对象占用的 N 个 unsigned char 对象的序列 其中 N 等于 sizeof T T 类型对象的值
  • 在 JavaScript 块上使用 HTML 注释仍然有意义吗?

    过去 人们习惯将 HTML 注释标签包裹在 JavaScript 块周围 以防止 旧 浏览器显示脚本 即使 Lynx 足够聪明 可以忽略 JavaScript 那么为什么有些人仍然这样做呢 这些天有什么正当理由吗 编辑 我确实遇到过一种情况
  • 检查是否可以安全地评估符号

    我有一根绳子x 我觉得x是某个类型的子类型的字符串表示形式Number 例如 x可能会取值 Float64 我可以使用以下方法检查这一点 eval parse x lt Number 然而 有可能x包含一些危险的东西 比如一些变体 rm s
  • textFieldDidBeginEditing:没有被调用

    我从下面得到了代码this https stackoverflow com questions 1247113 iphone keyboard covers uitextfield所以问题 当我开始编辑时 我试图向上滑动文本字段 因为否则它
  • MySQL INT 含义

    我想知道如果我采用值为 8 的 INT 这是否意味着我只能从 1 到 99999999 或从 1 到 4294967295 UNSIGNED 该文档似乎对此非常清楚 数字类型属性 MySQL 支持选择性指定显示的扩展 基关键字后面的括号中的
  • CSRF - 仅在第一次登录

    当我在服务器上部署我的应用程序时 第一次我可以毫无问题地登录 但是当我注销时 我在注销发布请求中收到 403 Forbidden 然后我无法成功登录 因为我在登录请求上收到 403 错误 Ctrl F5 尝试再次登录 它可以工作 但只能一次
  • .NET 单委托与多播委托[重复]

    这个问题在这里已经有答案了 我深入阅读了一些有关委托的内容 令人困惑的是具有一种方法的委托可能与多播委托不同 然而 通过反射 您可以清楚地看到 即使只有一个方法 委托也确实派生自MulticastDelegate 并不是立即地源自于Dele
  • 在java中获取两个日期之间的天数[重复]

    这个问题在这里已经有答案了 您好 有两个日期格式的日期 如何获得两者之间的天数差异 Date date1 Date date2 int numberDays 建议使用 JodaTime API 来处理日期 import java util
  • 跳过 Laravel 的 FormRequest 验证

    我最近添加了已被攻击 https github com valorin pwned validator到我的表单请求类来检查破解的密码 鉴于这会进行外部 API 调用 有没有办法让我在测试期间完全跳过此验证规则或 FormRequest 类
  • catch 和finally 中抛出异常。 CLR 行为与 try-catch 块[重复]

    这个问题在这里已经有答案了 我编写了简单的 C 控制台应用程序 class Mystery static void Main string args MakeMess private static void MakeMess try Sys
  • 自定义地图类型:重复地图和标记。如何向地图添加填充?

    使用 Google Maps API v3 我为虚构的游戏世界创建了自定义地图类型 默认情况下 地图 甚至自定义地图类型 都会水平重复 见下图 Larger Image here https i stack imgur com 6cPuZ
  • 当有新版本可用时,Android 以编程方式更新应用程序

    在我的应用程序中 我想检查应用程序商店中是否有我的应用程序的任何更新版本 如果有的话 那么必须通过警报消息通知用户 如果他 她选择升级 我想更新新版本 我想通过我的应用程序完成这一切 这可能吗 我有同样的问题 但已通过 JSOUP 库解决
  • 如何让 nginx/gunicorn 使用结构化日志记录?

    我目前看到 172 19 0 1 09 Feb 2018 07 00 32 0000 GET ping HTTP 1 1 200 1 curl 7 47 0 在我的日志中 但我使用像这样的结构化日志记录 https stackoverflo