如何从App Engine的Python Dev_server解码持久化日志文件

时间:2014-06-15 02:36:32

标签: python google-app-engine logging

使用Google App Engine的本地dev_server,其中一个published options是将日志文件保存到磁盘。

  

"如果您希望将日志从开发服务器保存到您自己>选择的位置的磁盘,请按以下方式为--logs_path命令行选项提供所需的路径和文件名:

     

dev_appserver.py --logs_path = your-path / your-logfile-name your-app-directory"

除非文件采用我无法解码的二进制格式,否则无法正常工作。

Google发布了一些sample code,但这是供应用程序阅读生产日志。

是否有命令行utlity或python脚本可以解码dev_server存储的日志文件?这是2011年以feature request提交的。

我可以在生成PyDev控制台时看到日志,但是一旦当前执行重新启动,那些日志就会从该控制台消失。

有一些suggestions来管道日志文件unix样式,但这对已经存储的日志没有帮助。

1 个答案:

答案 0 :(得分:1)

创建的日志文件是SQLite数据库。使用sqlite3 module进行访问。

使用的架构是:

CREATE TABLE AppLogs (
  id INTEGER NOT NULL PRIMARY KEY,
  request_id INTEGER NOT NULL,
  timestamp INTEGER NOT NULL,
  level INTEGER NOT NULL,
  message TEXT NOT NULL,
  FOREIGN KEY(request_id) REFERENCES RequestLogs(id)
);
CREATE TABLE RequestLogs (
  id INTEGER NOT NULL PRIMARY KEY,
  user_request_id TEXT NOT NULL,
  app_id TEXT NOT NULL,
  version_id TEXT NOT NULL,
  module TEXT NOT NULL,
  ip TEXT NOT NULL,
  nickname TEXT NOT NULL,
  start_time INTEGER NOT NULL,
  end_time INTEGER DEFAULT 0 NOT NULL,
  method TEXT NOT NULL,
  resource TEXT NOT NULL,
  http_version TEXT NOT NULL,
  status INTEGER DEFAULT 0 NOT NULL,
  response_size INTEGER DEFAULT 0 NOT NULL,
  user_agent TEXT NOT NULL,
  url_map_entry TEXT DEFAULT '' NOT NULL,
  host TEXT NOT NULL,
  task_queue_name TEXT DEFAULT '' NOT NULL,
  task_name TEXT DEFAULT '' NOT NULL,
  latency INTEGER DEFAULT 0 NOT NULL,
  mcycles INTEGER DEFAULT 0 NOT NULL,
  finished INTEGER DEFAULT 0 NOT NULL
);

RequestLogs包含HTTP请求(来自浏览器或任务队列); AppLogs包含在特定请求期间记录的所有日志记录条目。