django应用,用于在运行时管理系统日志
项目描述
允许从管理界面更改生产网站的日志配置。
您需要做的只是
从用户友好的表单创建日志配置[配置模型]
创建一个时间间隔[触发模型],其中您的配置有效(从开始日期到结束日期,或永久有效)
享受您的日志,因为您已经保存了触发器,如果它已经有效,或者是在您启用它的日期/时间,应用程序会立即运行它
稳定分支
开发状态
旧的方法是
您发现了一个错误,当前的堆栈跟踪不足以解决问题?首先,您应该更改设置LOGGING以使其更详细(例如使用LEVEL: ‘DEBUG’)
但是,坏处是,您必须:1. 连接到您的生产服务器 2. 在实时更改设置 3. 确保没有语法错误 4. 停止服务(有停机时间) 5. 不要忘记过一段时间回滚以防止性能问题。
概述
使用django-dynamic-logging,您可以在运行时更新日志配置,包括
更新处理程序级别和过滤器,但仅限于此(出于安全目的)
创建/删除/更新记录器。这包括级别、处理程序、过滤器以及传播标志。
日志配置可能存在于数据库中,但只能有一个是活跃的。最新的触发器(start_date)具有优先级,并将激活其配置。
例如:您想将应用“myproject.import”设置为调试模式,以便在今晚运行:您设置触发器,它将只为今晚启用调试。白天,将运行默认的日志配置。
截图
安装
使用pip安装
pip install django-dynamic-logging
或者,您可以安装下载或克隆此存储库,然后调用
pip install -e ..
需求
支持版本与当前django相同
python 2.7, 3.4, 3.5
django 1.8, 1.9, 1.10
源代码中的配置
将dynamic_logging添加到您的INSTALLED_APPS
就这么多
运行系统配置
转到您的管理界面,创建一个配置
创建一个触发器,以便您可以在需要时启用它。
新配置的传播
每次配置或触发器被更新/删除/创建时,dynamic_logging系统必须重新计算新的配置。但要工作,它必须意识到有东西被更新。为了使其可用,有三种可能性。在单进程(如gunicorn设置)中,日志配置对所有线程是全局的,这不是问题,但在多进程(如多服务器)中,我们必须传播一个正在运行实例已更改配置的信息。
为此,dynamic_logging提供了4种传播器
ThreadSignalPropagator:默认的,它在一个单服务器、单进程设置中实时工作。在真实生产环境中可能无法设置此设置。
DummyPropagator:当配置更新时,不会发生任何事情。所有触发器和后续触发器应用仅在启动时计算
TimerPropagator:每隔一个时间间隔检查一次配置的修改。这可行,但效率低下。
AmqpPropagator:生产环境中的最佳选择,但需要运行Amqp消息队列代理(在RabbitMQ上测试过)。它接受配置中的服务器URL,并将每个正在运行的实例连接到它。每次实例更新配置时,所有实例都会被触发,并将实时近似的配置重新加载。
可以使用on_error配置来在传播器设置失败时抛出异常,或pass``[默认]但将错误记录在``dynamic_logging.apps``中。
要更改传播器,您可以使用以下设置
DYNAMIC_LOGGING = {
"upgrade_propagator": {'class': "dynamic_logging.propagator.AmqpPropagator",
'config': {'url': 'amqp://guest:guest@localhost:5672/%2F'},
'on_error': 'raise', # or by default : 'pass'
}
}
特殊情况
django-dynamic-logging默认为您处理一些特殊情况。
如果您更新配置或触发器,它将计算您网站所有运行实例的当前配置和下一个配置(见传播)
如果您在django.db.backends上启用DEBUG(或更低)级别,它将更改数据库连接的设置,以确保使用CursorDebugWrapper并调用所有查询的调试。如果不这样做,默认情况下您将看不到任何查询。
您可以通过在dynamic_logging.signals.AutoSignalsHandler.extra_signals中添加自己的特殊情况来自定义或添加一些特殊情况。
设置
您可以在设置中添加一个具有以下键的DYNAMIC_LOGGING字典来自定义动态日志记录器的行为
signals_auto:特殊日志处理程序列表。目前只有db_debug被启用
config_upgrade_propagator:负责触发网站所有运行实例的调度器重新加载的类。见传播
接下来是什么?
一些即将推出的功能可以是
实时日志浏览器(通过websocket)
从/到其他服务器的推送/拉取配置(通过amqp)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
django-dynamic-logging-2.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | de5625145e73d0de0323178d358e76e4256bf81526b17f2ff952ebbc4f4aa14a |
|
MD5 | 9f16f5bc64f78743cb984b18a5297664 |
|
BLAKE2b-256 | 4f684ecab14ce2361e94e6832f22a6204ae641daf908d7f9bf05c81ec156530c |
django_dynamic_logging-2.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e85a379bd8d5e2a916fde6e9184dc35fb20756a06d0176a49838345e1317a0cf |
|
MD5 | 814207d2879353dde28f2cdbf8272699 |
|
BLAKE2b-256 | cb9610c79301650fc3ac2975301197fe32eb0dc95c463561ec91b240dbca6b2b |