【问题标题】:How to write to OS system log in Java?如何在 Java 中写入操作系统系统日志?
【发布时间】:2017-08-27 03:03:31
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java logging operating-system system


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      我认为this link 应该会在这个方向上为您提供一些帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 2014-05-27
        相关资源
        最近更新 更多