# 审计日志客户端
用于审计日志服务的Python客户端,支持同步和异步两种使用模式。
## 主要功能
- **双模式支持**:同步和异步API
- **缓冲处理**:可配置的内存缓冲区
- **重试机制**:指数退避重试策略
- **降级策略**:失败时自动写入本地文件
- **查询支持**:灵活的日志查询功能
## 安装
```bash
pip install audit-log-client
```
## 快速入门
### 同步客户端
```python
from audit_log_client import SyncAuditLogClient, AuditLog, AuditAction, AuditTarget
# 初始化客户端
client = SyncAuditLogClient(
base_url="http://audit.service/api",
app_id="your-app-id", # 应用ID
secret_key="your-secret-key" # 应用密钥
)
# 创建审计日志
log = AuditLog(
action=AuditAction.UPDATE,
target_type=AuditTarget.USER,
user_id="admin",
description="用户资料更新",
before={"name": "张三"},
after={"name": "张三丰"}
)
# 记录日志
client.log(log)
# 关闭客户端
client.close()
```
### 异步客户端
```python
import asyncio
from audit_log_client import AsyncAuditLogClient, AuditLog, AuditAction, AuditTarget
async def main():
# 初始化客户端
client = AsyncAuditLogClient(
base_url="http://audit.service/api",
app_id="your-app-id", # 应用ID
secret_key="your-secret-key" # 应用密钥
)
# 创建审计日志
log = AuditLog(
action=AuditAction.CREATE,
target_type=AuditTarget.ORDER,
user_id="sales",
description="新建订单"
)
# 记录日志
await client.log(log)
# 关闭客户端
await client.shutdown()
asyncio.run(main())
```
## 认证方式
新版本已升级认证机制,使用应用ID和应用密钥进行身份验证:
1. 在请求头中添加:
- `X-App-ID`: 您的应用ID
- `X-Secret-Key`: 您的应用密钥
2. 初始化客户端时提供:
```python
client = SyncAuditLogClient(
base_url="...",
app_id="your-app-id",
secret_key="your-secret-key"
)
```
## 查询示例
```python
from datetime import datetime, timedelta
# 查询最近1小时的用户更新日志
end_time = datetime.now()
start_time = end_time - timedelta(hours=1)
logs = client.query_logs(
action="UPDATE",
target_type="USER",
user_id="admin",
start_time=start_time,
end_time=end_time
)
for log in logs:
print(f"{log.timestamp}: {log.description}")
```
## 主要更新内容:
1. 将文档语言切换为中文
2. 更新了认证方式的说明,强调使用AppID和SecretKey
3. 修改了示例代码中的描述文本为中文
4. 添加了专门的认证方式说明章节
5. 新增了查询示例
6. 保留了必要的英文术语(如MIT许可证)
7. 更新了初始化客户端的参数说明
Raw data
{
"_id": null,
"home_page": null,
"name": "audit-log-client",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "audit, logging, security, monitoring",
"author": null,
"author_email": "Your Name <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/65/e2/0cf71c40b2e12baed9ff2dc476e84452e3e37873aa43c0144e8d8bc89cd4/audit_log_client-1.4.9.tar.gz",
"platform": null,
"description": "\n\n\n# \u5ba1\u8ba1\u65e5\u5fd7\u5ba2\u6237\u7aef\n\n\u7528\u4e8e\u5ba1\u8ba1\u65e5\u5fd7\u670d\u52a1\u7684Python\u5ba2\u6237\u7aef\uff0c\u652f\u6301\u540c\u6b65\u548c\u5f02\u6b65\u4e24\u79cd\u4f7f\u7528\u6a21\u5f0f\u3002\n\n## \u4e3b\u8981\u529f\u80fd\n\n- **\u53cc\u6a21\u5f0f\u652f\u6301**\uff1a\u540c\u6b65\u548c\u5f02\u6b65API\n- **\u7f13\u51b2\u5904\u7406**\uff1a\u53ef\u914d\u7f6e\u7684\u5185\u5b58\u7f13\u51b2\u533a\n- **\u91cd\u8bd5\u673a\u5236**\uff1a\u6307\u6570\u9000\u907f\u91cd\u8bd5\u7b56\u7565\n- **\u964d\u7ea7\u7b56\u7565**\uff1a\u5931\u8d25\u65f6\u81ea\u52a8\u5199\u5165\u672c\u5730\u6587\u4ef6\n- **\u67e5\u8be2\u652f\u6301**\uff1a\u7075\u6d3b\u7684\u65e5\u5fd7\u67e5\u8be2\u529f\u80fd\n\n## \u5b89\u88c5\n\n```bash\npip install audit-log-client\n```\n\n## \u5feb\u901f\u5165\u95e8\n\n### \u540c\u6b65\u5ba2\u6237\u7aef\n\n```python\nfrom audit_log_client import SyncAuditLogClient, AuditLog, AuditAction, AuditTarget\n\n# \u521d\u59cb\u5316\u5ba2\u6237\u7aef\nclient = SyncAuditLogClient(\n base_url=\"http://audit.service/api\",\n app_id=\"your-app-id\", # \u5e94\u7528ID\n secret_key=\"your-secret-key\" # \u5e94\u7528\u5bc6\u94a5\n)\n\n# \u521b\u5efa\u5ba1\u8ba1\u65e5\u5fd7\nlog = AuditLog(\n action=AuditAction.UPDATE,\n target_type=AuditTarget.USER,\n user_id=\"admin\",\n description=\"\u7528\u6237\u8d44\u6599\u66f4\u65b0\",\n before={\"name\": \"\u5f20\u4e09\"},\n after={\"name\": \"\u5f20\u4e09\u4e30\"}\n)\n\n# \u8bb0\u5f55\u65e5\u5fd7\nclient.log(log)\n\n# \u5173\u95ed\u5ba2\u6237\u7aef\nclient.close()\n```\n\n### \u5f02\u6b65\u5ba2\u6237\u7aef\n\n```python\nimport asyncio\nfrom audit_log_client import AsyncAuditLogClient, AuditLog, AuditAction, AuditTarget\n\nasync def main():\n # \u521d\u59cb\u5316\u5ba2\u6237\u7aef\n client = AsyncAuditLogClient(\n base_url=\"http://audit.service/api\",\n app_id=\"your-app-id\", # \u5e94\u7528ID\n secret_key=\"your-secret-key\" # \u5e94\u7528\u5bc6\u94a5\n )\n \n # \u521b\u5efa\u5ba1\u8ba1\u65e5\u5fd7\n log = AuditLog(\n action=AuditAction.CREATE,\n target_type=AuditTarget.ORDER,\n user_id=\"sales\",\n description=\"\u65b0\u5efa\u8ba2\u5355\"\n )\n \n # \u8bb0\u5f55\u65e5\u5fd7\n await client.log(log)\n \n # \u5173\u95ed\u5ba2\u6237\u7aef\n await client.shutdown()\n\nasyncio.run(main())\n```\n\n## \u8ba4\u8bc1\u65b9\u5f0f\n\n\u65b0\u7248\u672c\u5df2\u5347\u7ea7\u8ba4\u8bc1\u673a\u5236\uff0c\u4f7f\u7528\u5e94\u7528ID\u548c\u5e94\u7528\u5bc6\u94a5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\uff1a\n\n1. \u5728\u8bf7\u6c42\u5934\u4e2d\u6dfb\u52a0\uff1a\n - `X-App-ID`: \u60a8\u7684\u5e94\u7528ID\n - `X-Secret-Key`: \u60a8\u7684\u5e94\u7528\u5bc6\u94a5\n\n2. \u521d\u59cb\u5316\u5ba2\u6237\u7aef\u65f6\u63d0\u4f9b\uff1a\n ```python\n client = SyncAuditLogClient(\n base_url=\"...\",\n app_id=\"your-app-id\",\n secret_key=\"your-secret-key\"\n )\n ```\n\n## \u67e5\u8be2\u793a\u4f8b\n\n```python\nfrom datetime import datetime, timedelta\n\n# \u67e5\u8be2\u6700\u8fd11\u5c0f\u65f6\u7684\u7528\u6237\u66f4\u65b0\u65e5\u5fd7\nend_time = datetime.now()\nstart_time = end_time - timedelta(hours=1)\n\nlogs = client.query_logs(\n action=\"UPDATE\",\n target_type=\"USER\",\n user_id=\"admin\",\n start_time=start_time,\n end_time=end_time\n)\n\nfor log in logs:\n print(f\"{log.timestamp}: {log.description}\")\n```\n\n## \u4e3b\u8981\u66f4\u65b0\u5185\u5bb9\uff1a\n\n1. \u5c06\u6587\u6863\u8bed\u8a00\u5207\u6362\u4e3a\u4e2d\u6587\n2. \u66f4\u65b0\u4e86\u8ba4\u8bc1\u65b9\u5f0f\u7684\u8bf4\u660e\uff0c\u5f3a\u8c03\u4f7f\u7528AppID\u548cSecretKey\n3. \u4fee\u6539\u4e86\u793a\u4f8b\u4ee3\u7801\u4e2d\u7684\u63cf\u8ff0\u6587\u672c\u4e3a\u4e2d\u6587\n4. \u6dfb\u52a0\u4e86\u4e13\u95e8\u7684\u8ba4\u8bc1\u65b9\u5f0f\u8bf4\u660e\u7ae0\u8282\n5. \u65b0\u589e\u4e86\u67e5\u8be2\u793a\u4f8b\n6. \u4fdd\u7559\u4e86\u5fc5\u8981\u7684\u82f1\u6587\u672f\u8bed\uff08\u5982MIT\u8bb8\u53ef\u8bc1\uff09\n7. \u66f4\u65b0\u4e86\u521d\u59cb\u5316\u5ba2\u6237\u7aef\u7684\u53c2\u6570\u8bf4\u660e\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python client for audit logging services",
"version": "1.4.9",
"project_urls": {
"Bug Tracker": "https://github.com/yourusername/audit-log-client/issues",
"Documentation": "https://github.com/yourusername/audit-log-client/wiki",
"homepage": "https://github.com/yourusername/audit-log-client"
},
"split_keywords": [
"audit",
" logging",
" security",
" monitoring"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a2bca25a7fe4d996506b1e4a7fe3270aa2f37c2fe2eae109efee5cc579c76815",
"md5": "c85f9d2acd2849f931c6388217fcc8f9",
"sha256": "1e8ecfe1a2d6570cd510cb151ab61c5e3cd2968bc40b617fc3048510709e2634"
},
"downloads": -1,
"filename": "audit_log_client-1.4.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c85f9d2acd2849f931c6388217fcc8f9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 8107,
"upload_time": "2025-08-15T13:44:56",
"upload_time_iso_8601": "2025-08-15T13:44:56.120840Z",
"url": "https://files.pythonhosted.org/packages/a2/bc/a25a7fe4d996506b1e4a7fe3270aa2f37c2fe2eae109efee5cc579c76815/audit_log_client-1.4.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "65e20cf71c40b2e12baed9ff2dc476e84452e3e37873aa43c0144e8d8bc89cd4",
"md5": "7d18106b7152dbb4e5ea5e37a1959def",
"sha256": "1fc326e823a8ae90bda15e8f231b350a9aedbc0cedb95a8ed4553e2c8d8f4405"
},
"downloads": -1,
"filename": "audit_log_client-1.4.9.tar.gz",
"has_sig": false,
"md5_digest": "7d18106b7152dbb4e5ea5e37a1959def",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 8307,
"upload_time": "2025-08-15T13:44:57",
"upload_time_iso_8601": "2025-08-15T13:44:57.444624Z",
"url": "https://files.pythonhosted.org/packages/65/e2/0cf71c40b2e12baed9ff2dc476e84452e3e37873aa43c0144e8d8bc89cd4/audit_log_client-1.4.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-15 13:44:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "audit-log-client",
"github_not_found": true,
"lcname": "audit-log-client"
}