Где программы пространства пользователя, как предполагается, сохраняют свои журналы?

Нажмите Alt-F2 и выполните gconf-редактора. Перейдите к приложениям-> панель-> глобальный, и там ключ, "заблокированный вниз", должен добиться цели, я думаю так

25
20.02.2013, 21:40
5 ответов

Вы не можете записать в/var/log как обычный пользователь, но демон системного журнала сделает это для Вас, если Вы спросите. Если требуется зарегистрировать сообщения к стандартным системным журналам (например. /var/log/syslog), 4.4BSD утилита logger могло бы быть доступным в Вашей системе. Это установлено по умолчанию на Debian и находится в bsdutils пакет на производных Debian.

Вы получите преимущество любого существующего ранее вращения журнала, обслуживания и контролирующих инструментов, с недостатком необходимости в полномочиях считать системные журналы, и смешивания сообщений Вашего сценария в с сообщениями из других программ.

$ logger Hello
$ echo Goodbye | logger
$ sudo tail -2 /var/log/syslog
Feb 19 21:16:15 debian-host jander: Hello
Feb 19 21:16:21 debian-host logger: Goodbye

Существует несколько доступных параметров конфигурации; можно читать больше в man logger.

8
27.01.2020, 19:40
  • 1
    ответа является там привязками к языку для этой утилиты? Не породили бы подпроцессы для каждой строки stdout в приложении. –  ThorSummoner 18.01.2017, 20:35
  • 2
    @ThorSummoner: Поскольку в ответе Жабр говорится, syslog библиотечная подпрограмма C, и C++ может назвать любое использование C extern "C". Другие языки часто обеспечивают или универсальную привязку к чему-либо C или привязку к определенным вещам, но это зависит от языка. –  dave_thompson_085 19.01.2017, 03:11

Если Вы как обычный пользователь решаете запустить программу, естественное место для его журналов находятся в Вашем корневом каталоге. Ваш корневой каталог предназначен для Вас, чтобы хранить все Ваши файлы, являются ли они журналами программы, которую Вы запускаете или что-либо еще.

Если программа выполнена как часть системы, работая как обычно преданный пользователь системы, то естественное место для его журналов находится в /var/log. Создайте подкаталог /var/log/myapp и дайте ему соответствующие полномочия так, чтобы Ваше приложение могло записать там.

При необходимости и Ваша операционная система позволяет его, отметьте файл журнала как только добавление. Только корень может сделать это. Это имеет преимущество, что, если Ваше приложение поставлено под угрозу, оно не сможет стереть прошлые журналы, которые могут быть очень полезны для судебного анализа компромисса. Вам будет нужно вмешательство корня для вращения журнала: chown так, чтобы файл журнала был, больше не может открываться приложением, rename файл журнала, создайте новый файл только добавления с соответствующим владением, затем уведомьте приложение для открытия нового пустого файла.

Можно сделать любой журнал приложения к системным журналам путем вызова logger(1) или syslog(3).

13
27.01.2020, 19:40

Обычно для демона файл журнала создается root затем полномочия изменены так, чтобы непривилегированный пользователь мог записать в него. logrotate затем настраивается для сохранения полномочий во время вращения.

Если это - команда, не демон, то зарегистрируйтесь к /tmp (предпочтительно использование mktemp) и сообщите пользователю через STDOUT куда журнал пошел.

4
27.01.2020, 19:40
  • 1
    Хорошая идея. У меня есть несколько строк в моем ~/.profile, который проверяет, чтобы видеть, выполняет ли демон Dropbox и запускает его, если это не. Я рассматривал добавление & постараться не держать подсказку, но запускать записи Dropbox к консоли. Я в настоящее время перенаправляю, это производится к /dev/null, но хотел бы иметь некоторый способ отладить, если Dropbox не удается запуститься. –  Lord Loh. 20.02.2013, 01:08
  • 2
    Выезд daemonize. –  bahamat 20.02.2013, 01:10
  • 3
    Только для знания, "полномочия изменены так, чтобы непривилегированный пользователь мог записать в него". это сделано просто chmod 666? или я должен добавить пользователя к группе или чему-то как этот? –  Lord Loh. 20.02.2013, 01:11
  • 4
    Лучше под/var/tmp,/tmp, как гарантируют, не переживет начальную загрузку. –  vonbrand 20.02.2013, 03:22
  • 5
    @LordLoh.: Да, с chmod. Обычно 0644 или 0664 и владение пользователя/группы также изменяется на владение демона, который, как ожидают, запишет в него. –  bahamat 21.02.2013, 00:02

У меня сложилось впечатление, что программы пользовательского пространства должны по умолчанию отбрасывать журналы. Я видел, как различные программы сбрасывают журналы, где бы они ни были, и это никогда не особенно приветствуется в моих системах; имеет тенденцию накапливаться в каком-то месте, которое никогда не замечается, пока / пока не станет огромным.

Я бы предпочел, чтобы для них было определенное место, я играю в своей системе, пытаясь найти для них стабильное место.

Моя первая идея заключалась в том, чтобы использовать / var / run / user / $ UID / log , но я обнаружил, что в моей системе это монтирование TMPFS, недостаточно большое или действительно подходящее для использования с журналы.

Создайте для них место

Поскольку я недостаточно хорошо понимаю / var / run / user, чтобы интегрироваться с ним, я решил эмулировать его вручную для пользователя 1000.

# mkdir /var/log/user
# install -d /var/log/user/1000 --owner 1000 -g 1000 -m 0700

Я бы рекомендовал придерживаться этого правила. FHS / var / log spc для структуры в этой папке, но спецификация в свободной форме, поэтому нечего соблюдать.

Logrotate Config

В этом каталоге, предоставляемом вашей системой, нет ротации журналов, я рекомендую создать такой для вашей системы:

# /etc/logrotate.d/userlogs

/var/log/user/*/log/*.log 
/var/log/user/*/log/**/*.log
{
        daily
        missingok
        rotate 7
        compress
        notifempty
        nocreate
}

Ниже приведен мой предыдущий пост / var / run / user / 1000 / log, я не могу рекомендовать это, если вы действительно не знаете, что делаете (и если вы знаете, скажите мне, как тоже!)

, возможно, следующим образом, но я просто придумал это, потому что это имело для меня смысл.

/var/run/user/1000/log/<app>.log
/var/run/user/1000/log/<app>/<context>.log

Интеграция с / var / log / user / 1000:

# Integrate with above /var/run/user, probably a bad idea:
# ln -s /var/log/user/1000/ /var/run/user/1000/log

3
27.01.2020, 19:40

Если ваше приложение (myapp )работает с правами суперпользователя, храните журналы в /var/log/myapp

В противном случае файлы журналов можно хранить в папке $HOME/.local/myapp

-1
18.10.2021, 05:07

Теги

Похожие вопросы