Запись в системный журнал с помощью Process.runtime.exec

В настоящее время я пытаюсь записать данные в системный журнал, и для этого я использую оператор «Runtime.getRuntime().exec» в java. Полное заявление:

Runtime.getRuntime().exec("logger " +  data.toString());

Теперь это работает отлично, но кажется слишком простым, и я хотел знать, имеет ли прямое использование этого плохие последствия. Кроме того, если есть лучшие способы записи данных (кроме библиотеки log4j) в системный журнал, я открыт для этого. Спасибо.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
174
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы создаете новый процесс для каждой отдельной записи в журнале, что ужасно дорого. Кроме того, вы можете подвергнуться инъекционным атакам, передав data.toString() в командную строку. Делайте то, что, вероятно, делает библиотека Log4j (у нее открытый исходный код, если вам нужно вдохновение) и отправляйте сообщения UDP. Это дешево, и это также портативно.

Протокол определен в rfc5424 и rfc5426, если вы хотите написать сетевой код с нуля.

На самом деле log4j тоже отлично работает. Но я застрял, потому что всякий раз, когда я регистрируюсь с помощью log4j, имя хоста, отображаемое в журнале, является «localhost», и я просто не могу обойти это. Есть идеи?

Syed Muhammad Oan 22.04.2019 08:18
stackoverflow.com/questions/7744840/…
ewramner 22.04.2019 08:20

большое спасибо, это сработало. Мне нужно немного поработать над моим поиском в Google. Нужно использовать правильные ключевые слова, лол.

Syed Muhammad Oan 22.04.2019 08:23

Другие вопросы по теме