Используя мою собственную функцию форматирования с `log4-clj-format` - PullRequest
0 голосов
/ 16 сентября 2018

Я смотрю на 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))

Любая помощь будет принята с благодарностью.

...