本文目录导读:

是的,脚本可以自动记录 Webhook 日志,通常可以通过以下几种方式实现:
基础日志记录(Node.js示例)
const express = require('express');
const fs = require('fs');
const app = express();
app.post('/webhook', (req, res) => {
const log = {
timestamp: new Date().toISOString(),
headers: req.headers,
body: req.body,
ip: req.ip
};
// 追加到日志文件
fs.appendFileSync('webhook.log', JSON.stringify(log) + '\n');
res.status(200).send('OK');
});
使用日志库(更专业)
# Python示例
import logging
from flask import Flask, request
app = Flask(__name__)
# 配置日志
logging.basicConfig(
filename='webhook.log',
level=logging.INFO,
format='%(asctime)s - %(message)s'
)
@app.route('/webhook', methods=['POST'])
def webhook():
log_data = {
'headers': dict(request.headers),
'body': request.json,
'method': request.method
}
logging.info(f"Webhook received: {log_data}")
return 'OK', 200
高级功能实现
// TypeScript示例
interface WebhookLog {
id: string;
timestamp: string;
method: string;
headers: Record<string, string>;
body: any;
responseStatus: number;
duration: number;
}
class WebhookLogger {
private logs: WebhookLog[] = [];
async logWebhook(req: Request, res: Response): Promise<void> {
const startTime = Date.now();
const logEntry: WebhookLog = {
id: crypto.randomUUID(),
timestamp: new Date().toISOString(),
method: req.method,
headers: Object.fromEntries(req.headers),
body: req.body,
responseStatus: res.statusCode,
duration: Date.now() - startTime
};
// 存储到文件或数据库
await this.saveToDatabase(logEntry);
this.logs.push(logEntry);
}
}
自动日志轮转
#!/bin/bash
# 日志轮转脚本
LOG_FILE="/var/log/webhook.log"
MAX_SIZE=10000000 # 10MB
if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE") -gt $MAX_SIZE ]; then
mv $LOG_FILE "${LOG_FILE}.$(date +%Y%m%d_%H%M%S)"
gzip "${LOG_FILE}.$(date +%Y%m%d_%H%M%S)"
fi
使用现成工具
简单的Shell脚本
#!/bin/bash
# 监听Webhook并记录日志
while true; do
nc -l -p 8080 > >(tee -a webhook_raw.log) 2>&1
done
使用systemd服务
[Service] ExecStart=/usr/bin/python3 /opt/webhook-logger.py StandardOutput=append:/var/log/webhook.log StandardError=append:/var/log/webhook-error.log Restart=always
推荐实践
- 结构化日志:使用JSON格式便于后续分析
- 日志级别:区分INFO、WARNING、ERROR
- 自动清理:设置日志保留策略
- 错误处理:确保日志记录不影响主流程
- 安全考虑:过滤敏感信息(如密码、token)
需要更具体的实现方案吗?比如针对特定语言或框架的代码示例?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播