JVM 使用 Systemd 日志传输并直接输出到 JournalCTL 而不是 STDout。我正在开发Clojure应用程序,它将日志直接打印到标准输出中。SystemD 服务从那里选取它并放入日志文件中。但碰巧异常记录在多个单独的行中。如何使用系统D日志,它将具有多行日志条目?
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 "testnmessage"]))
;; Structured logging
(.invoke sd-journal-send (to-array ["MESSAGE=%s" "anotherntestnmessage" "PRIORITY=%d" emerg-priority "WHATEVER=stuff" nil])) ; nil required!
使用journalctl -f -o json-pretty
进行监视是验证其是否有效的简单方法...
如何将其集成到现有日志记录中取决于您。
此 API 的介绍位于 http://0pointer.de/blog/projects/journal-submit.html