首页 > 解决方案 > 使用我自己的格式化函数和 `log4-clj-format`

问题描述

我正在查看log4-clj-layout以便为 Java 登录的混乱带来一点秩序。我想尝试一下我自己的格式功能,但我无法让它发挥作用。

按照上面页面上的说明,我开始将以下内容添加到我的log4j.properties文件中:

log4j.appender.console.layout=log4_clj_layout.layout.Layout
log4j.appender.console.layout.FormatFn=json-format

那效果很好。然后我添加了一个函数,log-test.core/my-format并尝试将其用于日志记录:

log4j.appender.console.layout=log4_clj_layout.layout.Layout
log4j.appender.console.layout.FormatFn=log-test.core/my-format

但是现在我得到的只是启动时的错误:

(log/warn "foo")
Setting format-fn: log-est.core/my-format
log4j:WARN Failed to set property [formatFn] to value "log-test.core/my-format". 
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
...

显然我错过了一些东西,但是什么?

我这样定义了我的格式函数(l是的别名log4-clj-layout.layout):

(defn my-format [event]
  (pr event)
  (l/json-format event))

任何和所有的帮助将不胜感激。

标签: clojurelog4j

解决方案


推荐阅读