我想从Java做syslogging。有一个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&amp; 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显示要格式化的消息,但该端口无法访问。