erlang - 记录网页访问的最佳方式

标签 erlang cowboy nitrogen

我的一个网站正在使用 Nitrogen 和 Cowboy 服务器。 我想记录对网页的每次访问,就像 Apache 使用 access.log 所做的那样。 最好的方法是什么?

最佳答案

您可以使用牛仔中间件https://ninenines.eu/docs/en/cowboy/1.0/guide/middlewares/

只需创建一个简单的日志模块:

-module(app_web_log).
-behaviour(cowboy_middleware).

-export([execute/2]).

execute(Req, Env) ->
    {{Peer, _}, Req2} = cowboy_req:peer(Req),
    {Method, Req3} = cowboy_req:method(Req2),
    {Path, Req4} = cowboy_req:path(Req3),
    error_logger:info_msg("~p: [~p]: ~p ~p", [calendar:universal_time(), Peer, Method, Path]),
    {ok, Req4, Env}.

并将其添加到中间件列表中:

    {ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [
            {env, [{dispatch, Dispatch}]},
            {middlewares, [cowboy_router, app_web_log, cowboy_handler]}]).

关于erlang - 记录网页访问的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27165682/

相关文章:

Erlang escript 使用启动参数启动应用程序

javascript - 使用 Cowboy 作为 Express JS 的 HTTP 网络服务器

elixir - 如何在没有 Phoenix 的情况下配置 Plug.Static

apache - 计算Yaws Web应用程序的点击数

erlang - 为什么erlang io是:format output being lost and what do I need to do to restore it?

erlang - 将 Erlang catch 转换为 Elixir

erlang - 有没有办法在 guard 队中使用本地功能

erlang - "use of opcode 153; this emulator supports only up to 152"

c - Frama-C:Jessie 插件无法证明按位或安全(w.r.t. 溢出)