Ubuntu:Tomcat 新貴腳本。日誌最終出現在 upstart 日誌中

Ubuntu:Tomcat 新貴腳本。日誌最終出現在 upstart 日誌中

我有一個簡單的 tomcat 暴發戶腳本。這是廚師模板:

description "Tomcat Server"

  start on runlevel [2345]
  stop on runlevel [!2345]
  respawn
  respawn limit 10 5

  # run as non privileged user 
  # add user with this command:
  ## adduser --system --ingroup www-data --home /opt/apache-tomcat apache-tomcat
  setuid "<%= node['tomcat']['user'] %>"
  setgid "<%= node['tomcat']['group'] %>"

  # paths:
  env JAVA_HOME="<%= node["java"]["home"] %>"
  env CATALINA_BASE="<%= node["tomcat"]["base"] %>"
  env CATALINA_HOME="<%= node["tomcat"]["home"] %>/current"

  exec $CATALINA_HOME/bin/catalina.sh run

  # cleanup temp directory after stop
  post-stop script 
    rm -rf $CATALINA_HOME/temp/*
  end script

從init腳本切換到上面發布的upstart腳本後,所有tomcat日誌都會寫入/var/log/upstart/tomcat。所有日誌都進入 upstart 日誌有什麼原因嗎?解決這個問題的好方法是什麼?這是在 ubuntu 12.04 上

答案1

新貴食譜提供了對正在發生的事情的解釋。簡而言之,「標準輸出和標準錯誤......自動記錄到目錄 /var/log/upstart/ 中的檔案」。 “catalina.sh run”指令將所有輸出傳送到標準輸出。因此,upstart 將 stdout 重定向到 upstart 日誌。

我採取了以下方法來解決這個問題:

# Manually specify CATALINA_OUT, so we can redirect ourselves
env CATALINA_OUT=<path to catalina_base>/logs/catalina.out

# Stop upstart from handling stdout/stderr & redirect to the log file ourselves
console none
exec $CATALINA_HOME/bin/catalina.sh run >> "$CATALINA_OUT" 2>&1

我嘗試執行“catalina.sh start”,如果您查看catalina腳本,它會將輸出重定向到CATALINA_OUT本身。但是,我無法讓暴發戶正確管理流程。 「expect fork」和「expect daemon」都無法管理從 catalina 啟動腳本建立的後台程序。

相關內容