2011-11-01 50 views
4

我为每个传入请求分配一个唯一的ID,并希望在日志记录完成时自动将其包含在日志中(而不是明确将其包含在所有地方)。我正在使用中间件来生成这个唯一的ID并将其存储在本地线程中。Django - 日志记录唯一ID

我想修改Django的日志记录格式,包括直接这种独特的ID:

LOGGING = { 
    ... 
    'formatters': { 
     'full': { 
      'format': '%(asctime)s %(levelname)s %(name)s - %(message)s', 
     } 
    } 
    ... 
} 

怎样的唯一ID组件添加到格式,而不在每个日志语句明确加入?

+0

我想你将不得不编写一个自定义的格式化程序,它使用一个类变量来生成ID并在LOGGING字典中使用它 –

+1

对于希望在Apache的'mod_unique_id'和'django-log-unique-id ' - 你需要添加一个Django设置:'LOG_REQUEST_ID_HEADER =“UNIQUE_ID”'加上一个Apache配置:'RequestHeader set UNIQUE_ID“%{UNIQUE_ID} e”' –

回答

4

使用Filter:该技术在this post中描述。虽然它指的是IP地址,但您可以轻松使用该方法记录您的唯一请求ID。

+0

谢谢,这很有效。 – jeffreyveon