No Mac OS X, como posso logar no Console.app a partir do terminal?

8

Eu vi o uso de /dev/console em vários scripts para o Mac OSX, mas não tenho certeza de como ele está sendo usado. Eu verifiquei Console.app e não vi os resultados do meu comando de teste:

echo test > /dev/console

sendo impresso lá fora, então para onde ele vai, ou como você o usaria?

    
por cwd 15.02.2011 / 14:12

4 respostas

7

O dispositivo /dev/console não é especialmente relacionado ao aplicativo Console .

No Mac OS X 10.6, o aplicativo Console tem dois tipos de fontes de dados que ele lê: arquivos de log normais (por exemplo, os arquivos em /var/log/ ) e mensagens registradas através do ) facilidade de syslog.

Se você tiver um arquivo de registro que deseja monitorar, poderá usar o arquivo > Abrir… item de menu (⌘O) para exibir o arquivo no Console .
Nota: A única maneira de remover um arquivo da lista de arquivos do Console parece ser o uso do arquivo Arquivo > item de menu Mover para o Lixo (⌘⌫); Esteja preparado para retirar o arquivo da Lixeira se você quiser apenas pará-lo no Console .

Você pode usar o syslog programa de linha de comando para enviar mensagens para o recurso de syslog.

syslog -s Your message goes here. \(quote special chars for the shell'!)'

No entanto, na configuração padrão, essa mensagem nunca será exibida em nenhuma das exibições do Console porque o "nível" é muito baixo para ser importante. Esta filtragem inicial é devida por syslogd Ele é configurado pelo asl.conf e arquivos syslog.conf . A configuração padrão não armazena a maioria das mensagens se o nível for muito baixo (e syslog -s é o padrão para o nível mais baixo). O Console só pode mostrar mensagens armazenadas por syslogd .

Você pode alterar o valor do campo Nível usando a opção -l :

syslog -s -l notice This message should show up in \"All Messages\" \
  with a Facility of syslog.

O nível notice é o nível mais baixo (padrão) para o qual syslogd armazena a maioria das mensagens.

Uma mensagem gerada como essa será exibida na pesquisa de banco de dados integrada "All Messsages" do Console
(o arquivo All Messages.aslquery in /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/ tecnicamente limita a mensagem onde o campo Facility "contém" a string vazia, mas essa condição é trivialmente satisfeita por qualquer valor de Facility).

Se você quiser que sua mensagem apareça na pesquisa de banco de dados interna "Console Messages" do Console , você deve ser um pouco mais específico. Ele mostra apenas mensagens (armazenadas) que possuem um campo Facility que é igual a com.apple.console (consulte o arquivo Console Messages.aslquery in /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/ ). Você pode gerar tais mensagens com syslog pela opção -k para definir o campo Recurso.

syslog -s -k Facility com.apple.console \
          -k Level notice \
          -k Message 'This will show up in "Console Messages"'

Ao usar -k , todas as opções e a própria mensagem devem ser especificadas com conjuntos de -k key value arguments (não podemos usar -l para definir o nível). Isso significa que temos que colocar a mensagem em um único argumento para que possa ser o valor do campo Mensagem.

    
por 28.03.2011 / 06:53
7

eu uso:

logger Hello World

sempre funciona para mim. despeja "hello world" para o syslog, que deve aparecer em console.app

    
por 28.03.2011 / 06:08
0

Não estou certo, mas pode ser o dispositivo chamado quando o > console é inserido no campo de nome de usuário da janela de login. Quando você insere o acima, você despeja o CLI.

    
por 22.02.2011 / 19:50
0

Você pode gravar em um arquivo de sua escolha que possa ser visualizado no aplicativo Console.

Se você deseja registrar para uso em nível de usuário:

echo "test" > /Users/$USER/Library/Logs/your_script.log

ou para algo que é carregado para todos os usuários:

echo "test" > /Library/Logs/your_script.log
    
por 28.03.2011 / 04:44