JVM 使用 Systemd 日志传输并直接输出到 JournalCTL 而不是 STDout。我正在开发 Clojure 应用程序,它将日志直接打印到标准输出中。SystemD 服务从那里挑选它并放入日志文件中。但是碰巧异常记录在多个单独的行中。如何使用具有多行日志条目的 SystemD 日志?
user12524810
问问题
231 次
1 回答
0
JNA 允许这样做。尝试添加库net.java.dev.jna/jna
(用 测试5.5.0
),然后按照这些行编写代码以打印到日志:
(import '[com.sun.jna Function])
(def sd-journal-print (Function/getFunction "systemd" "sd_journal_print")
(def sd-journal-send (Function/getFunction "systemd" "sd_journal_send")
(def emerg-priority 0)
;; Plain print with priority and message
(.invoke sd-journal-print (to-array [emerg-priority "test\nmessage"]))
;; Structured logging
(.invoke sd-journal-send (to-array ["MESSAGE=%s" "another\ntest\nmessage" "PRIORITY=%d" emerg-priority "WHATEVER=stuff" nil])) ; nil required!
监控journalctl -f -o json-pretty
是一种简单的方法来验证这是否有效......
如何将其集成到现有的日志记录中取决于您。
此 API 的介绍位于http://0pointer.de/blog/projects/journal-submit.html
于 2020-01-07T14:10:10.307 回答