Ckan信息级别日志转到错误日志文件

Ale*_*lex 5 ckan

我按照官方文档使用 apache 从 debian 上的源代码安装了 Ckan,一切正常,但所有 ckan 信息日志都写入错误日志文件。

这是我的虚拟主机:

<VirtualHost *:80>
  ServerName ckan.mydomain.com
  ServerAlias ckan.mydomain.com
  WSGIScriptAlias / /etc/ckan/default/apache.wsgi

  # Pass authorization info on (needed for rest api).
  WSGIPassAuthorization On

  # Deploy as a daemon (avoids conflicts between CKAN instances).
  WSGIDaemonProcess ckan_default display-name=ckan_default processes=2 threads=15

  WSGIProcessGroup ckan_default

  ErrorLog /var/log/apache2/ckan_default.error.log
  CustomLog /var/log/apache2/ckan_default.custom.log combined

  <IfModule mod_rpaf.c>
      RPAFenable On
      RPAFsethostname On
      RPAFproxy_ips 127.0.0.1
  </IfModule>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这是我的 ckan_default.error.log 的一行:

<[Thu Oct 15 10:47:48.797562 2015] [:error] [pid 14100] 2015-10-15 10:47:48,797 INFO [ckan.lib.base] /ckan-admin render time 0.085 seconds>
Run Code Online (Sandbox Code Playgroud)

为什么会有 [:error] 以及为什么 ckan_default.error.log 中有这一行?

谢谢。亚历克斯

D R*_*ead 3

CKAN 的默认配置只是将日志发送到 stderr,如ckan/config/deployment.ini_tmpl中所示:

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
Run Code Online (Sandbox Code Playgroud)

Apache 将 stderr 保存到其 ErrorLog 中,这就是为什么您会在 ckan_default.error.log 中看到它。

Apache 的文档说这是:

Apache httpd 将发送诊断信息并记录它遇到的任何错误

因此,我认为将 CKAN 的信息消息与警告(非致命错误)和错误一起包含在内并不算太疯狂。

CKAN 的默认设置被设计为最简单的方式,这就是文件处理程序在此提交中被删除的原因: https: //github.com/ckan/ckan/commit/6e1d325d61e

但这当然是一种妥协,欢迎所有建议。

  • https://docs.python.org/2/library/logging.html#logging-levels (2认同)