如何用Java编写OS系统日志?

时间:2017-04-02 03:47:34

标签: java logging operating-system system

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

是否可以从Java输出获取消息到这样的系统日志?我正在编写基于GUI的应用程序,因此命令行中没有任何内容。在这种情况下,标准System.outSystem.err可能不会有多大用处,除非我遗漏了某些内容。

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

我知道IDE会通过System.outSystem.err显示输出就好了,但这是因为如果最终用户遇到这样的问题。

作为一个例子:我已经写过"无代码语言模块"对于Mac上的应用程序TextWrangler。这些模块在应用程序启动时由TW读取,如果在处理它们时出错,则会记录错误并可在Mac控制台应用程序中查看。

2 个答案:

答案 0 :(得分:1)

您可以将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

答案 1 :(得分:1)

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

我认为this link应该在这方面给你一些启动。