No Mac OS X, como posso acessar o Console.app a partir do terminal?

8

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

teste de eco> / dev / console

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

cwd
fonte
@Qosmo. Esta pergunta é 100% válida para o Superusuário e não há necessidade ou motivo para migrá-la.
BinaryMisfit 15/02
Ser válido não implica que seria melhor servido lá? Por que foi criado? De qualquer forma é apenas uma sugestão ...
Admirável Novato

Respostas:

7

O /dev/consoledispositivo não está especialmente relacionado ao aplicativo Console .

No Mac OS X 10.6, o aplicativo Console possui dois tipos de fontes de dados: arquivos de log normais (por exemplo, os arquivos inseridos /var/log/) e mensagens registradas no recurso syslog (estendido pela Apple).

Se você possui um arquivo de log que deseja monitorar, pode usar o item de menu Arquivo > Abrir ... (⌘O) para visualizar o arquivo no console .
Nota: A única maneira de remover um arquivo da lista de arquivos do console parece ser usar o item de menu Arquivo > Mover para a lixeira (⌘⌫); esteja preparado para retirar o arquivo da lixeira se você quiser parar de assisti-lo no console .

Você pode usar o programa de linha de comando syslog para enviar mensagens para o recurso 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 visualizações do console, pois seu "nível" é muito baixo para ser importante. Essa filtragem inicial ocorre devido ao syslogd . É configurado pelos arquivos asl.confe syslog.conf. A configuração padrão não armazena a maioria das mensagens se seu nível for muito baixo (e o syslog -spadrão é o nível mais baixo). O console pode mostrar apenas as mensagens que foram armazenadas pelo syslogd .

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

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

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

A mensagem gerada como esta vai aparecer no Console ‘s built-in‘Todos os messsages’pesquisa de banco de dados
(o arquivo All Messages.aslqueryem /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/tecnicamente limita a mensagem onde o campo Facility‘contém’a cadeia vazia, mas esta condição é trivialmente satisfeita por qualquer Facility valor).

Se você quiser que sua mensagem apareça em Console ‘s built-in‘Console Messages’pesquisa de banco de dados, então você deve ser um pouco mais específico. Ele mostra apenas mensagens (armazenadas) que possuem um campo de facilidade igual a com.apple.console(consulte o arquivo Console Messages.aslqueryem /Applications/Utilities/Console.app/Contents/Resources/ASLQueries/). Você pode gerar essas mensagens com o syslog pela -kopção de definir o campo Facilidade.

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 valueargumentos (não podemos usar -lpara definir o nível). Isso significa que precisamos colocar a mensagem em um único argumento para que possa ser o valor do campo Mensagem.

Chris Johnsen
fonte
Então, para que o comando "logger" é usado? Faz parte do syslog?
Cwd 29/03
@cwd: Ele também usa o recurso syslog. O syslog da Apple tem duas interfaces principais: syslog (3) e asl (3) . O primeiro é bastante padrão na maioria dos sistemas Unix-y atualmente; logger usa. O último é uma extensão específica da Apple; o comando syslog o usa. O console vê mensagens de ambos, mas a pesquisa "Mensagens do console" precisa de um valor do recurso estendido pela Apple (que o registrador não pode criar).
Chris Johnsen 29/03
7

eu uso:

logger Hello World

sempre funciona para mim. despeja "olá mundo" para o syslog, que deve aparecer no console.app

peelman
fonte
0

Não sou positivo, mas pode ser o dispositivo chamado quando> console for inserido no campo de nome de usuário da janela de login. Quando você insere o acima, ele despeja a CLI.

iklier
fonte
0

Você pode gravar em um arquivo de sua escolha e visualizar no aplicativo Console.

Se você deseja fazer logon para nível de usuário, use:

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

ou para algo carregado para todos os usuários:

echo "test" > /Library/Logs/your_script.log
ridogi
fonte