mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
journalctl: find journal files in right path
This commit is contained in:
parent
69e5d42db0
commit
250d54b5be
@ -25,6 +25,48 @@
|
||||
|
||||
#include "journal-file.h"
|
||||
|
||||
static int system_journal_open(JournalFile **f) {
|
||||
int r;
|
||||
char *fn;
|
||||
sd_id128_t machine;
|
||||
char ids[33];
|
||||
|
||||
assert(f);
|
||||
|
||||
r = sd_id128_get_machine(&machine);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
fn = join("/var/log/journal/", sd_id128_to_string(machine, ids), "/system.journal", NULL);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
|
||||
r = journal_file_open(fn, O_RDONLY, 0640, f);
|
||||
free(fn);
|
||||
|
||||
if (r >= 0)
|
||||
return r;
|
||||
|
||||
if (r < 0 && r != -ENOENT) {
|
||||
log_error("Failed to open system journal: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
fn = join("/run/log/journal/", ids, "/system.journal", NULL);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
|
||||
r = journal_file_open(fn, O_RDONLY, 0640, f);
|
||||
free(fn);
|
||||
|
||||
if (r < 0) {
|
||||
log_error("Failed to open system journal: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int r;
|
||||
JournalFile *f;
|
||||
@ -33,10 +75,7 @@ int main(int argc, char *argv[]) {
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
|
||||
r = journal_file_open("/var/log/journal/system.journal", O_RDONLY, 0644, &f);
|
||||
if (r == -ENOENT)
|
||||
r = journal_file_open("/run/log/journal/system.journal", O_RDONLY, 0644, &f);
|
||||
|
||||
r = system_journal_open(&f);
|
||||
if (r < 0) {
|
||||
log_error("Failed to open journal: %s", strerror(-r));
|
||||
return EXIT_FAILURE;
|
||||
|
@ -375,7 +375,7 @@ static int system_journal_open(Server *s) {
|
||||
return r;
|
||||
|
||||
/* First try to create the machine path, but not the prefix */
|
||||
fn = join("/var/log/journal/", sd_id128_to_string(machine, ids), NULL);
|
||||
fn = strappend("/var/log/journal/", sd_id128_to_string(machine, ids));
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
(void) mkdir(fn, 0755);
|
||||
@ -389,35 +389,38 @@ static int system_journal_open(Server *s) {
|
||||
r = journal_file_open(fn, O_RDWR|O_CREAT, 0640, &s->system_journal);
|
||||
free(fn);
|
||||
|
||||
if (r >= 0)
|
||||
if (r >= 0) {
|
||||
fix_perms(s->system_journal, 0);
|
||||
else if (r == -ENOENT) {
|
||||
|
||||
/* /var didn't work, so try /run, but this time we
|
||||
* create the prefix too */
|
||||
fn = join("/run/log/journal/", ids, NULL);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
(void) mkdir_p(fn, 0755);
|
||||
free(fn);
|
||||
|
||||
/* Then create the runtime journal file */
|
||||
fn = join("/run/log/journal/", ids, "/system.journal", NULL);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
r = journal_file_open(fn, O_RDWR|O_CREAT, 0640, &s->runtime_journal);
|
||||
free(fn);
|
||||
|
||||
if (r >= 0)
|
||||
fix_perms(s->runtime_journal, 0);
|
||||
}
|
||||
|
||||
if (r < 0 && r != -ENOENT) {
|
||||
log_error("Failed to open journal: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
if (r < 0 && r != -ENOENT) {
|
||||
log_error("Failed to open system journal: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
/* /var didn't work, so try /run, but this time we
|
||||
* create the prefix too */
|
||||
fn = strappend("/run/log/journal/", ids);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
(void) mkdir_p(fn, 0755);
|
||||
free(fn);
|
||||
|
||||
/* Then create the runtime journal file */
|
||||
fn = join("/run/log/journal/", ids, "/system.journal", NULL);
|
||||
if (!fn)
|
||||
return -ENOMEM;
|
||||
r = journal_file_open(fn, O_RDWR|O_CREAT, 0640, &s->runtime_journal);
|
||||
free(fn);
|
||||
|
||||
if (r < 0) {
|
||||
log_error("Failed to open runtime journal: %s", strerror(-r));
|
||||
return r;
|
||||
}
|
||||
|
||||
fix_perms(s->runtime_journal, 0);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int server_init(Server *s) {
|
||||
|
Loading…
Reference in New Issue
Block a user