如何使用 java 在 linux 上编写 Syslog

Posted

技术标签:

【中文标题】如何使用 java 在 linux 上编写 Syslog【英文标题】:How to Write Syslog on linux using java 【发布时间】:2018-05-29 09:49:26 【问题描述】:

我想在 Linux 系统上使用 java 程序编写 Syslog。我不想使用任何库。

【问题讨论】:

【参考方案1】:

假设“没有库”意味着没有第三方库。

一种方法是编写您自己的 Syslog 协议实现;见RFC 5424。你可以在纯 Java 中做到这一点。

更正 - 实际上,不是纯 Java。 syslog 协议(通常)使用 UNIX 域套接字,并且没有用于此的内置 Java 库功能。您需要使用本机代码或 3rd-party 库;见UNIX Domain Socket in Java

第二种方法是为syslog(3) C 库方法编写一个JNI 包装器。在底层,这个库在本地端口上打开一个数据报套接字,并且(可能)实现了 Syslog 协议。所以你这样做并不会取得太大的成就。

(请注意,C 库是(至少)任何 GNU/Linux 系统的一部分,因此这不算使用 3rd-party 库。至少,在我的书中没有......)

【讨论】:

【参考方案2】:

我将系统记录器与这样的运行时一起使用:

public static void log(String TextToLog)
    Runtime r = Runtime.getRuntime();
    try
        r.exec("logger \"Applicationname " + TextToLog + "\"");
    
    catch(IOException e)e.printStackTrace();

【讨论】:

以上是关于如何使用 java 在 linux 上编写 Syslog的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Mingw-64在 Kali Linux上编译Windows漏洞

如何在没有编译器的电脑上编写程序?

如何使用 Spark/Scala 在 HDFS 上编写/创建 zip 文件?

如何在linux上编译C语言? 没有安装gcc组件怎么办?

Spark UDF:如何在每一行上编写一个 UDF 以提取嵌套结构中的特定值?

如何使用 JavaScript 在服务器上编写文本文件? [关闭]