我想用Java做系统日志。有一个log4j附加器,但它似乎不起作用(无论如何对我来说…尽管谷歌的调查结果显示,还有许多人对此问题仍未解决)。
我正在尝试调试附加程序,因此我已经根据以下脚本编写了
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显示消息格式化为OK,但端口无法访问。