如何在Java中写入操作系统系统日志?



Mac OS有一个名为Console的应用程序,其中包含记录的消息,错误和错误。我相信Windows等效物是事件查看器。我想在Linux上也有一个,但我对它一无所知,也不知道它在哪里。

是否可以像这样将消息从 Java 输出发送到系统日志?我正在编写一个基于 GUI 的应用程序,因此没有任何内容从命令行运行。在这种情况下,标准System.outSystem.err可能不会有太大用处,除非我错过了什么。

我已经为我的应用程序编写了一个简单的日志记录服务,该服务写入专用日志文件,但我希望具有某种故障保护,以防在尝试写入此文件时发生 I/O 错误。

我知道 IDE 将通过System.out显示输出,System.err很好,但这适用于最终用户遇到此类问题的情况。

举个例子:我在Mac上为应用程序TextWrangler编写了"无代码语言模块"。这些模块在应用程序启动时由TW读取,如果在处理它们时出现错误,则会记录错误,并且可以在Mac控制台应用程序中查看。

在Linux上,它被称为syslog。在Mac上实现控制台登录的方法之一是使用log4j 'org.apache.log4j.net.SyslogAppender'。

我认为这个链接应该给你一些朝这个方向的启动。

您可以将 System.out 重定向到日志文件,Mac 的控制台应用程序是以".log"结尾的文件的默认查看器。

通常这样做的一种方法是使用调用Java程序的shell脚本。 在这个 Java 7 示例中,调用主类 MyClass 的输出被重定向到 mylogfile.log。 使用 System.out 编写的所有内容都将在 mylogfile.log 中。

#!/bin/bash
for a in /path/to/my/jars/*
do 
CLASSPATH=$CLASSPATH:$a
done
java -Xms128M -Xmx128M -XX:MaxPermSize=128M -cp ${CLASSPATH} com.example.package.MyClass >> mylogfile.log

最新更新