Я хочу сделать системный журнал с Java. Есть приложение log4j, но оно, похоже, не работает (для меня все равно ... хотя результаты Google показывают, что многие другие с этой проблемой все еще не решены).
Я пытаюсь отладить аппендер, поэтому я написал следующий скрипт на основе RFC3164
Запускается, но в системном журнале не отображается логирование.
// scala
import java.io._
import java.net._
val ds = new DatagramSocket()
val fullMsg = "<11>May 26 14:47:22 Hello World"
val packet = new DatagramPacket(fullMsg.getBytes("UTF-8"), fullMsg.length,
InetAddress.getLocalHost, 514)
ds send packet
ds.close
Я также пытался использовать / bin / nc, но он тоже не работает.
echo "<14>May 26 15:23:33 Hello world" > nc -u localhost 514
Команда Ubuntu / usr / bin / logger работает , однако.
logger -p user.info hello world
# logs: May 26 15:25:10 dsupport2 jem: hello world
Что я мог делать не так?
Редактировать
И nc, и scala генерируют следующий пакет:
jem@dsupport2:~/projects/log4j$ grep -A 10 514 out
xxx.xxx.xxx.xxx:37920(unknown) -> xxx.xxx.xxx.xxx:514(syslog)
Version: 4 Total Lenght: 63 TTL: 64
Packet Number: 4
---[ UDP Data ]------------------------------------------------------
<14>May 26 15:26:33 Hello world 22
Кажется, я не могу заставить / usr / bin / logger (тот, который работает) говорить удаленно. Я предполагаю, что вы должны настроить локальный системный журнал в качестве реле.
Редактировать
Используя nc, wireshark показывает сообщение, которое нужно отформатировать, ОК, но порт недоступен.