将流量记录到SQLite数据库的ASGI中间件
项目描述
asgi-log-to-sqlite
将流量记录到SQLite数据库的ASGI中间件
关于此项目的背景,请参阅使用ASGI中间件将日志记录到SQLite。
安装
pip install asgi-log-to-sqlite
使用
from asgi_log_to_sqlite import AsgiLogToSqlite
from my_asgi_app import app
app = AsgiLogToSqlite(app, "/tmp/log.db")
对您的ASGI应用程序的请求现在将记录到位于/tmp/log.db
的SQLite数据库文件中。
模式
用于记录请求的数据库包含一个主键表requests
和6个查找表:paths
、user_agents
、referers
、accept_languages
、content_types
和query_strings
。
完整的模式如下
CREATE TABLE [paths] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_paths_name
ON paths (name);
CREATE TABLE [user_agents] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_user_agents_name
ON user_agents (name);
CREATE TABLE [referers] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_referers_name
ON referers (name);
CREATE TABLE [accept_languages] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_accept_languages_name
ON accept_languages (name);
CREATE TABLE [content_types] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_content_types_name
ON content_types (name);
CREATE TABLE [query_strings] (
[id] INTEGER PRIMARY KEY,
[name] TEXT
);
CREATE UNIQUE INDEX idx_query_strings_name
ON query_strings (name);
CREATE TABLE [requests] (
[start] FLOAT,
[method] TEXT,
[path] INTEGER REFERENCES [paths]([id]),
[query_string] INTEGER REFERENCES [query_strings]([id]),
[user_agent] INTEGER REFERENCES [user_agents]([id]),
[referer] INTEGER REFERENCES [referers]([id]),
[accept_language] INTEGER REFERENCES [accept_languages]([id]),
[http_status] INTEGER,
[content_type] INTEGER REFERENCES [content_types]([id]),
[client_ip] TEXT,
[duration] FLOAT,
[body_size] INTEGER
);
项目详情
关闭
asgi_log_to_sqlite-0.1.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c8a99b2c755389fc110a5e1c63247adaa82b93cf78cbaad449b5b341e1257d1c |
|
MD5 | a3530f6a38756b57db988ab2721d120b |
|
BLAKE2b-256 | 755c1df94bafebe64fc54f223978fb4f189fad8f8ffe7a8e913c24881eb2263d |