Вход в системный журнал с помощью Process.runtime.exec - PullRequest
0 голосов
/ 22 апреля 2019

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

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

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

1 Ответ

2 голосов
/ 22 апреля 2019

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

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

...