mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-11 05:17:44 +03:00
Merge pull request #14965 from keszybz/journal-rotation-hint
systemctl: be more specific when emitting warning about rotated journal
This commit is contained in:
commit
9c7179bbfa
@ -80,6 +80,10 @@ static int access_check_var_log_journal(sd_journal *j, bool want_other_users) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int journal_access_blocked(sd_journal *j) {
|
||||
return hashmap_contains(j->errors, INT_TO_PTR(-EACCES));
|
||||
}
|
||||
|
||||
int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_users) {
|
||||
Iterator it;
|
||||
void *code;
|
||||
@ -95,7 +99,7 @@ int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_use
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hashmap_contains(j->errors, INT_TO_PTR(-EACCES))) {
|
||||
if (journal_access_blocked(j)) {
|
||||
if (!quiet)
|
||||
(void) access_check_var_log_journal(j, want_other_users);
|
||||
|
||||
|
@ -7,5 +7,5 @@
|
||||
#include "sd-journal.h"
|
||||
|
||||
bool journal_field_valid(const char *p, size_t l, bool allow_protected);
|
||||
|
||||
int journal_access_blocked(sd_journal *j);
|
||||
int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_users);
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "id128-util.h"
|
||||
#include "io-util.h"
|
||||
#include "journal-internal.h"
|
||||
#include "journal-util.h"
|
||||
#include "json.h"
|
||||
#include "log.h"
|
||||
#include "logs-show.h"
|
||||
@ -1232,7 +1233,21 @@ int show_journal(
|
||||
|
||||
if (r > 0 && not_before < cutoff) {
|
||||
maybe_print_begin_newline(f, &flags);
|
||||
fprintf(f, "Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.\n");
|
||||
|
||||
/* If we logged *something* and no permission error happened, than we can
|
||||
* reliably emit the warning about rotation. If we didn't log anything and
|
||||
* access errors happened, emit hint about permissions. Otherwise, give a
|
||||
* generic message, since we can't diagnose the issue. */
|
||||
|
||||
bool noaccess = journal_access_blocked(j);
|
||||
|
||||
if (line == 0 && noaccess)
|
||||
fprintf(f, "Warning: some journal files were not opened due to insufficient permissions.");
|
||||
else if (!noaccess)
|
||||
fprintf(f, "Warning: journal has been rotated since unit was started, output may be incomplete.\n");
|
||||
else
|
||||
fprintf(f, "Warning: journal has been rotated since unit was started and some journal "
|
||||
"files were not opened due to insufficient permissions, output may be incomplete.\n");
|
||||
}
|
||||
|
||||
warn_cutoff = false;
|
||||
|
Loading…
Reference in New Issue
Block a user