初めてのElixir/Phoenixアプリケーションを作成しました。訪問者のIPアドレスを記録したいと思います。すべての訪問者のIPアドレスをロギングする
私のrouter.exでは、実際に存在するページのIPアドレスを「ロギング」しています。
def log_ip(conn, _) do
conn.remote_ip
|> Tuple.to_list
|> Enum.join(".")
|> IO.puts
conn
end
...
defmodule Mysite.Router do
use Mysite.Web, :router
pipeline :browser do
plug :log_ip
...
scope "/", Mysite do
pipe_through :browser
このすべては、通常、正常に動作しますが、私は、例えば、存在しないページにアクセスしようとしているいくつかのボットがあることを、端末に見ています"/admin.php"、 "/command.php"私はこれらのIPアドレスをログに記録したいが、上記のコードはそれのために働いていない。
潜在的に関係のない、しかし、私はまた、存在しないリンク(例えば/ブログ/存在しないページ)
defimpl Plug.Exception, for: Phoenix.Template.UndefinedError do
def status(_exception), do: 404
end
connおよびログにアクセスする方法はあり打つ人を処理するために、このコードを持っています私が404を返す前にremote_ip(またはこれをすべて処理するより良い方法)?
ありがとうございました!私は(関数プラグを使用する代わりに)モジュールプラグを作成して、プラグインMysite.Plugs.LogIpをendpoint.exに追加しました。 –