2

我们的 RCP 应用程序记录了相当多的日志,但只有 INFO 及更高版本输出到控制台。在 windows/linux 上这没问题,但在 OSX 上,所有日志记录似乎都传递给 syslogd,然后它决定记录什么而不记录什么,这意味着处理成千上万的 FINEST 日志消息,这使得 syslogd 使用 140% cpu 和 gobble内存。运行我们的应用程序大约 3 分钟后,syslogd 使用了 2.5gb 的内存,整个系统变得无法使用。杀死 syslogd/rebooting 是唯一的治疗方法。从控制台启动应用程序使其直接登录到控制台,没有问题。

如何停止 syslogd 处理我在 OSX 上的 RCP 日志记录?

4

3 回答 3

1

查看您的 RCP 应用程序的 RCP.App/Contents/Info.plist 文件。RCP 产品构建生成的默认文件具有 <string>-consoleLog<string>。

这可能就是为什么一切都在 syslogd 中结束的原因。

于 2009-03-30T17:35:37.690 回答
0

我对 Eclipse RCP 一点也不熟悉,但我确实对 syslog 有一些经验。您可能正在使用其中一个local0local1作为工具进行日志记录。OSXlocal0.*指向/var/log/appfirewall.log/var/log/ipfw.loglocal1_ 如果您正在登录到任一设施,那么您记录的所有内容都将写入磁盘。

我将首先查看是否以及如何配置应用程序正在登录的 syslog 工具。一旦确定它正在登录哪个设施,您应该能够通过编辑/etc/syslog.conf并向 syslog 守护进程发送 HUP 信号来关闭它。阅读手册条目以syslogd获取syslog.conf详细说明。

您可能还想考虑使用更类似于 Java 的日志接口而不是 syslog。

于 2009-03-22T18:22:47.283 回答
0

我也偶尔被这个咬过。我的猜测是这样的:

如果您从桌面通过 Eclipse.app 启动 Eclipse,它的控制台(stdout/stderr)将被重定向到 syslog,因此 Eclipse 本身(或使用 printf 的插件)的任何输出都将在那里结束。

尝试./eclipse在 Terminal.app 中调用,看看您是否在终端窗口中收到消息,而不是在 syslog 中。

但是,这当然并不能解决您实际上不希望它们中的任何一个的问题...找出谁在产生输出,然后让他们将其放入 ErrorLog 中。

不幸的是,我不再知道这发生在我身上,所以我无法测试它。祝你好运!

于 2009-03-23T09:46:08.467 回答