gpt4 book ai didi

logging - clojure 中的惯用日志记录

转载 作者:行者123 更新时间:2023-12-03 23:09:09 26 4
gpt4 key购买 nike

我是 clojure 的新手,想了解登录 clojure 的方法,来自 命令式背景 .在 java 生产程序中,我通常会在 中记录(调试/信息)方法的开始结束 ,类似的东西:

public void foo(){
logger.debug("starting method to embrace %s", rightIdioms);
doSomething();
logger.debug("successfully embraced %s idioms", idioms.length);
}

我熟悉 pro's/con's记录和知道 tools在clojure中可用,

我还可以找到 的一些骗局登录上述方法 ,加深了 张力登录时我觉得非必要:
  • 日志记录是 副作用和 clojure 插入无副作用。
  • 更多代码行或“代码复杂性”:在 Java 中 - 拥有大类很常见(getter、setter、构造函数),在 clojure 中,表达式返回值,记录“困难”过程并强化小函数和命名空间:(一个例子是需要从 if 更改为 if- let 或 if-do 来执行日志记录):
    (defn foo [x]
    (if (neg? x)
    (inc x)
    x))

    (defn foo [x]
    (if (neg? x)
    (let [new-x (inc x)]
    (logger/debug (format "inc value, now %s" new-x)
    new-x))
    x))

  • 我已阅读 clojure/tap 的日志记录或 tracing但不确定我完全发现它很有用。

    在 clojure 中进行登录的方法或惯用方法是什么?

    最佳答案

    给出的最佳实践很少 in this博客文章,它建议记录数据而不是字符串可能非常有用并且适合 clojure 风格的日志记录。
    日志事件可能是这样的:

    {:service     :user.profile/update
    :level :debug
    :time "2020-01-01"
    :description {:before '0
    :after '1}
    :metric 10ms}
    metric 可以是任何东西,从更新时间到从数据库中提取的行数。
    然后当你有数据时,你可以用它做任何事情 - 分析它以获得洞察力或分组搜索和查找。如果需要控制台日志记录,您可以随时将数据结构转回字符串。

    关于logging - clojure 中的惯用日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60019148/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com