我的Elixir代码中有一个特定的日志语句,应该非常频繁地调用,但我不想每次都打印该日志语句。可能是我想每5次打印一次。
如果有办法,请帮忙。它太快了我的日志文件!提前致谢
一般来说,没有简单/标准的方法。如果你真的需要处理这个特定的情况,并且你想“不时”记录这个语句,最简单的解决方案如下:
Enum.random(0..4) > 0 || Logger.info("My message")
此代码应在20%的情况下触发日志消息。
但是请注意,这与“每5次完全一次”不一样,每次触发日志时都需要生成随机数。无论是随机数的生成是“更重”,实际的日志操作(甚至是相关的)都在很大程度上取决于具体的环境/情况。
我不知道任何已经执行此操作的软件包,但您可以使用以下内容实现自己的限制:
def maybe_log(msg, 0, log_every) do
Logger.info(msg)
log_every
end
def maybe_log(_msg, n, log_every) when n < 0, do: log_every
def maybe_log(_msg, n, _), do: n-1
# usage
log_count = maybe_log(msg, log_count, log_every)