我想从 Java 进行系统日志记录。有一个 log4j appender,但它似乎不起作用(无论如何对我来说......虽然谷歌结果显示许多其他人的这个问题仍未解决)。
我正在尝试调试 appender,所以我根据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 (有效的那个)远程交谈。我假设您应该将本地 syslogd 设置为中继。
编辑
使用 nc,wireshark 显示要格式化的消息,但端口无法访问。