Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tdiary serverコマンドにログファイル指定オプションが欲しい #397

Open
tdtds opened this issue Jan 20, 2014 · 12 comments

Comments

@tdtds
Copy link
Member

tdtds commented Jan 20, 2014

現在 $stderr 決め打ちだが、ログファイルを指定できた方が良い。

ローテーションとか考え始めると面倒になるけどそれは別途。

@machu
Copy link
Member

machu commented Jan 1, 2015

少し書いてみたのですが、サーバの種類 (thin, webrick, unicorn) ごとに処理を分けないとダメですね。

  • tdiary server コマンドは webrick に限定
  • それ以外のrackサーバを使いたいときは、 Gemfile.local に書いて bundle exec rackupbundle exec unicorn などで起動

のほうが良い気がしてきました。

@tdtds
Copy link
Member Author

tdtds commented Jan 7, 2015

うーん、なるほど。性能等を確保したい場合にはtdiaryコマンド使うなとなると、tdiaryコマンドはあくまで開発者向けという位置づけになってしまいそう。tdiaryコマンドの扱いを明確にしないといけませんね……。

@machu
Copy link
Member

machu commented Jan 7, 2015

Railsはどうだろうと調べてみました。

  • bin/rails serverで起動すると必要なミドルウェアをRails側でセットアップする。
  • rackupで起動するとconfig.ruにミドルウェアを書く。

tDiaryでもomniauthのセッションやbase_dirをconfig.ruに書くことから、tdiary serverコマンドは開発やお試し用に割り切るのがよいと思えてきました。

@tdtds
Copy link
Member Author

tdtds commented Jan 7, 2015

(ちょっと脱線) omniauth関連のissueでも気になったんだけど、config.ruの扱いも難しいですよね。tDiaryではconfig.ruも配布ファイルだけど、それを書き換えることを前提にするのは(これまでの)tDiaryの流儀からは外れてしまうという。

@machu
Copy link
Member

machu commented Jan 7, 2015

そうなんですよね。CGIでの.htaccessのような性質も持っているので、どう扱うかのポリシーを決めたいですね。

@hsbt
Copy link
Member

hsbt commented Jan 8, 2015

理想的には tdiary.conf に書いた middlewares を stack に積む機構があるとよさそう

@machu
Copy link
Member

machu commented Jan 8, 2015

設定系の課題は別issueを立てるとして、いったん tdiary serverに話を戻します。

現状(わかっていること、わかったこと)

  • tdiary server コマンドでは --cgi (TDiary::Server) と --rack (Rack::Server) による起動をサポート
    • --cgi はwebrickで起動
    • --rack は Rack::Server が対応しているRackサーバ (thin/puma/webrick/mongrel) で起動
  • Rack::Server はwebrickのみログファイルの指定が可能
  • よって tdiary serverRack::Server に依存している限り、 webrick 以外のログファイルを指定できない

対応案

  1. webrick指定の場合のみ --log オプションを有効にする (cli.rb内で起動サーバを判定できる?)
  2. tdiary server コマンドでは --log オプションをサポートしない。ログファイルを指定したいときは、利用者が使っているRackサーバごとに指定する。
    • unicornの場合はunicorn.conf, thinの場合はconfig.yamlや-l logs/thin.log
  3. ログの出力をRackサーバに頼らずに、tDiary側で面倒を見る (CommonLoggerを独自でハンドリング)

ちょっと、案3でやってみます。

@machu
Copy link
Member

machu commented Jan 9, 2015

案3のCommonLoggerでやってみましたが、RackサーバではなくRackアプリケーション側でのログ出力になるので、config.ruに指定する形になりますね。

use Rack::CommonLogger,
  File.new('log/access.log', 'a+').tap{|f| f.sync = true }

config.ruは書き換えない前提として、

という方針でどうでしょうか?

@tdtds
Copy link
Member Author

tdtds commented Jan 12, 2015

見落としてました、すみません。

「tdiary server コマンドは今のままにする」ってのはWrbrick専用で--logオプションがある状態という意味ですね? であれば現状はそれで良いと思います。

@machu machu added this to the 4.1.4 milestone Jun 29, 2015
@tdtds tdtds modified the milestones: 4.2.0, 4.2.1 Sep 29, 2015
@tdtds
Copy link
Member Author

tdtds commented Dec 25, 2015

これはどういうステータスなんでしたっけ? 「config.ruの別ファイルへの切り出し (#476) が実現したら、tdiary側でもログを出力できるようにする」がまだかな?

@machu
Copy link
Member

machu commented Dec 26, 2015

はい、そうです。

@tdtds tdtds modified the milestones: 4.2.2, 4.2.1 Dec 28, 2015
@tdtds
Copy link
Member Author

tdtds commented Dec 28, 2015

じゃあ延期しておきます

@machu machu modified the milestones: 5.0.1, 5.0.0 Mar 29, 2016
@tdtds tdtds modified the milestones: 5.0.2, 5.0.1 Jun 29, 2016
@tdtds tdtds modified the milestones: 5.0.3, 5.0.2 Sep 29, 2016
@machu machu modified the milestones: 5.0.4, 5.0.3 Dec 29, 2016
@tdtds tdtds removed this from the 5.0.4 milestone Mar 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants