在 Mac OS X 上,如何从终端登录到 Console.app?

cwd*_*cwd 11 mac console macos

我已经/dev/console在 Mac OSX 的几个脚本中看到了 的使用,但我不确定它是如何使用的。我检查了 Console.app 并没有看到我的测试命令的结果:

回声测试 > /dev/console

在那里打印出来,那么它会去哪里,或者你将如何使用它?

pee*_*man 8

我用:

logger Hello World

总是对我有用。将“hello world”转储到 syslog,它应该显示在 console.app 中


Chr*_*sen 8

/dev/console设备与控制台应用程序没有特别的关系。

在 Mac OS X 10.6 中,控制台应用程序有两种数据源可供它读取:普通日志文件(例如 中的文件/var/log/)和通过(Apple 扩展的)系统日志工具记录的消息。

如果您有要监视的日志文件,可以使用File > Open...菜单项 (?O) 在Console 中查看该文件。
注意:从Console的文件列表中删除文件的唯一方法似乎是使用它的File > Move to Trash菜单项 (??); 如果您只想停止在Console 中观看文件,请准备好将文件从垃圾箱中取出。

您可以使用syslog命令行程序将消息发送到 syslog 工具。

syslog -s Your message goes here. \(quote special chars for the shell'!)'
Run Code Online (Sandbox Code Playgroud)

但是,在默认配置下,此消息将永远不会出现在任何控制台视图中,因为它的“级别”太低以至于不重要。这个初始过滤是由syslogd 完成的。它由asl.confsyslog.conf文件配置。如果它们的级别太低(并且syslog -s默认为最低级别),则默认配置不会存储大多数消息。控制台只能显示由syslogd存储的消息。

您可以使用以下-l选项更改 Level 字段的值:

syslog -s -l notice This message should show up in \"All Messages\" \
  with a Facility of syslog.
Run Code Online (Sandbox Code Playgroud)

notice级别是syslogd将为其存储大多数消息的(默认)最低级别。

像这样生成的消息将显示在Console的内置“所有消息”数据库搜索中
(该文件All Messages.aslquery/Applications/Utilities/Console.app/Contents/Resources/ASLQueries/技术上将其限制为 Facility 字段“包含”空字符串的消息,但任何 Facility 都可以轻松满足此条件价值)。

如果您希望您的消息出现在Console的内置“控制台消息”数据库搜索中,那么您必须更具体一些。这只能说明(存储)有一个设施领域,等于消息com.apple.console(查看文件Console Messages.aslquery/Applications/Utilities/Console.app/Contents/Resources/ASLQueries/)。您可以通过设置 Facility 字段的选项使用syslog生成此类消息-k

syslog -s -k Facility com.apple.console \
          -k Level notice \
          -k Message 'This will show up in "Console Messages"'
Run Code Online (Sandbox Code Playgroud)

使用时-k,所有选项和消息本身都必须用参数集指定-k key value(我们不能-l用来设置级别)。这意味着我们必须将消息作为单个参数,以便它可以是 Message 字段的值。