我有@Override
public void onBackPressed() {
// Save the data to whatever you would like (database, variable, etc.)
finish();
}
,我希望在某些情况下让它为service
守护程序创建日志。到目前为止,我还没有找到任何关于如何操作的说明。
我是否误解了journald
的预期用途?或者是我遗失的事情真的很明显吗?
任何帮助都将不胜感激。
答案 0 :(得分:3)
如果您有服务,则将您的日志写入标准错误。 (它甚至可以作为C ++中名为std::clog
的流使用,具有比std::cerr
更多的“类似日志”的语义。)就是这样。它是一种日志机制,适用于systemd,daemontools,daemontools-encore,runit,s6,perp,nosh,freedt等。
有一个用于写入systemd日志的API。但是,请确保您有充分的理由将软件和用户锁定到该API。写入标准错误是一种适用的机制,几乎无处不在。管理员可以很好地理解和轻松控制,调整和理解。它应该是第一选择。
答案 1 :(得分:1)
Lennart Poettering's blog shows how this is done(如果需要此功能,请使用API)
#include <systemd/sd-journal.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
sd_journal_send("MESSAGE=Hello World!",
"MESSAGE_ID=52fb62f99e2c49d89cfbf9d6de5e3555",
"PRIORITY=5",
"HOME=%s", getenv("HOME"),
"TERM=%s", getenv("TERM"),
"PAGE_SIZE=%li", sysconf(_SC_PAGESIZE),
"N_CPUS=%li", sysconf(_SC_NPROCESSORS_ONLN),
NULL);
return 0;
}
请注意,使用sd_journal_send
不仅可以使MESSAGE
之外的其他字段添加到日志中,还可以对PRIORITY
进行更精细的粒度控制。