Linux stdout, где пишет журнал и сколько памяти ему выделено

Я использую ConsoleAppender для входа в свое приложение Java. ConsoleAppender записывает в System.out, который равен stdout в случае Linux.

Может ли кто-нибудь помочь мне понять, куда идут логи stdout и сколько памяти выделено для них.

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


person Anshul Sharma    schedule 15.11.2019    source источник


Ответы (1)


Может кто-нибудь помочь мне понять, куда идут журналы stdout

Обычно stdout просто попадает в буфер вашей оболочки, который обычно не буферизуется/не записывается ни в один файл. Я говорю обычно, потому что уверен, что существуют специальные системы и дистрибутивы Linux, которые могут работать по-другому. В остальном я предполагаю, что вы используете «общий дистрибутив Linux для настольных компьютеров или серверов».

Однако вы можете перенаправить stdout в файл.

Я предполагаю, что вы запускаете свое приложение примерно так:

java -jar myapp.jar

Ваше приложение выводит на stdout, что позволяет вам видеть вывод в терминале.

В Linux (я бы сказал, в большинстве систем Unix) вы можете просто перенаправить stdout (и, возможно, stderr) в такой файл:

java -jar myapp.jar > output.txt

Затем в вашей системе должен быть создан файл с именем output.txt. Если вам все еще нужна «обратная связь с пользователем в реальном времени», вы можете просто сделать что-то вроде

tail -f output.txt

для непрерывной печати содержимого от output.txt до stdout.

сколько памяти ему отведено.

Ваш файл output.txt будет расти до тех пор, пока не закончится место на диске. Вы можете использовать систему ротации журналов рассылки, чтобы ограничить размер файла. FreeBSD использует newlogsys(8). Я уверен, что выбранный вами дистрибутив Linux поставляется с аналогичной системой.

person Joel Bodenmann    schedule 15.11.2019
comment
stackoverflow.com/users/1414496/joel-bodenmann в первом случае, когда перенаправление журнала приложения не происходит, он пойдет в буфер, не могли бы вы сказать мне, каков размер этого буфера. - person Anshul Sharma; 15.11.2019
comment
Это зависит от реализации. Вы можете найти этот вопрос полезным: буфер"> stackoverflow.com/questions/10904067/ - person Joel Bodenmann; 15.11.2019
comment
Кроме того, если дизайн вашей системы зависит от знания этой информации, вам, скорее всего, следует рассмотреть возможность изменения вашего проекта. Что-то столь же простое, как перенаправление stdout в файл, как описано в моем ответе, не только очень легко сделать, но и предполагает использование базовой операционной системы и других задействованных компонентов. - person Joel Bodenmann; 15.11.2019