web-dev-qa-db-ja.com

nginxでカスタムエラーログ形式を指定することは可能ですか?

Nginxでアクセスログのカスタムログ形式を指定できますが、エラーログでは機能しません。エラーが発生したときはいつでも見たいです。出来ますか?

28
tjeden

独自の形式を指定することはできませんが、nginxビルドインでは、いくつかのレベルのerror_log-ingを使用できます。

構文:error_log file [ debug | info | notice | warn | error | crit ]

デフォルト: ${prefix}/logs/error.log

サーバー(およびfastcgi)エラーが記録されるファイルを指定します。

エラーレベルのデフォルト値:

  1. メインセクション-エラー
  2. hTTPセクション-クリティカル
  3. サーバーセクション-クリティカル

私のerror_logでは、時間は常にログ内の各エラー文字列の始まりのintで表示されます。

19
CyberDem0n

Nginxエラーログのフォーマットを変更したいとき(この場合、openrestyのngx.logメソッドでLuaから自分のログを送信するとき)に使用した汚いトリックは、すべてのログメッセージに十分な\b(バックスペース)文字を付けてすべて削除することでしたtail -f error.logを実行しているときに表示したくない情報。

5
Amnon

そのためのハックがあります。

アクセスログの形式はカスタマイズできますが、エラーログの形式はカスタマイズできません。したがって、ハックは、カスタマイズされたエラーログの場合、エラーが発生したときにのみアクセスログを生成します。

これは、error_pageディレクティブを使用して行うことができます。

http {
...
  log_format custom_combined "...";
  server {
    ...
    error_page 50x @create_custom_error50x;
    ...
    location @create_custom_error50x {
      access_log path custom_combined;
      return 50x;
    }
  }
}
4
Satys