Acesso a dados de mensagens registradas¶
As mensagens registradas são armazenadas em uma tabela de eventos que você configurou para suportar o registro. Você pode acessar as mensagens registradas executando o comando SELECT na tabela de eventos.
Nota
Antes de começar a registrar mensagens, é necessário configurar uma tabela de eventos. Para obter mais informações, consulte Configuração de uma tabela de eventos.
Uma tabela de eventos tem um conjunto de colunas predefinidas que capturam informações sobre as mensagens registradas, inclusive:
O carimbo de data/hora em que a mensagem foi ingerida.
O escopo do evento de log, como o nome da classe em que o evento de log foi criado.
A origem do evento de log, incluindo o banco de dados, o esquema, o usuário, o warehouse e assim por diante.
O nível de gravidade do log.
A mensagem de log.
Para obter informações de referência sobre as colunas da tabela de eventos, consulte Colunas da tabela de eventos.
Exemplo de consulta de dados de registro¶
As seções a seguir ilustram com dados de exemplo como é possível consultar a tabela de eventos para obter dados de mensagens de log.
Dados coletados¶
A saída no exemplo a seguir mostra o conteúdo de um subconjunto selecionado de colunas de uma tabela de eventos depois que as mensagens de registro foram capturadas para dois manipuladores separados, um escrito em Scala e o outro em Python.
Para obter informações de referência sobre as colunas da tabela de eventos que coletam dados de mensagens de log, consulte Dados para logs.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP | SCOPE | RESOURCE_ATTRIBUTES | RECORD_TYPE | RECORD | VALUE |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | **See excerpt below** | LOG | { "severity_text": "INFO" } | Logging from Python module. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | | LOG | { "severity_text": "INFO" } | Logging from Python function start. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" } | | LOG | { "severity_text": "ERROR" } | Logging an error from Python handler. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:55 | { "name": "ScalaLoggingHandler" } | | LOG | { "severity_text": "INFO" } | Logging from within the Scala constructor. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | | LOG | { "severity_text": "INFO" } | Logging from Scala method start. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | | LOG | { "severity_text": "ERROR" } | Logging an error from Scala handler: Something went wrong. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Trechos de RESOURCE_ATTRIBUTES
Os seguintes trechos JSON contêm um atributo de coluna RESOURCE_ATTRIBUTES cujos dados estão incluídos na saída anterior. O código de consulta SELECT que segue esses trechos seleciona o valor desse atributo.
A coluna RESOURCE_ATTRIBUTES contém dados sobre a origem do evento. Para informações de referência, consulte Coluna RESOURCE_ATTRIBUTES.
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
{
...
"snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
...
}
Consulta com instrução SELECT¶
Ao consultar dados de mensagens, você pode selecionar valores de atributos em uma coluna usando a notação de parênteses, como no formulário a seguir:
COLUMN_NAME['attribute_name']
O código no exemplo abaixo consulta a tabela anterior com a intenção de isolar os dados relacionados às mensagens de log do manipulador Python. A consulta seleciona o atributo severity_text
para a gravidade da entrada de log. Ele seleciona o conteúdo da coluna VALUE
para a mensagem de log.
O procedimento que contém o manipulador é chamado do_logging
. Observe que você deve especificar o nome do procedimento com todas as letras maiúsculas para que a consulta funcione.
SET event_table_name='my_db.public.my_event_table';
SELECT
TIMESTAMP as time,
RESOURCE_ATTRIBUTES['snow.executable.name'] as executable,
RECORD['severity_text'] as severity,
VALUE as message
FROM
IDENTIFIER($event_table_name)
WHERE
SCOPE['name'] = 'python_logger'
AND RESOURCE_ATTRIBUTES['snow.executable.name'] LIKE '%DO_LOGGING%'
AND RECORD_TYPE = 'LOG';
Resultados de consultas¶
A saída no exemplo a seguir ilustra o resultado da consulta.
----------------------------------------------------------------------------------------------------------------
| TIME | EXECUTABLE | SEVERITY | MESSAGE |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO" | "Logging from Python module." |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO" | "Logging from Python function start." |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "ERROR" | "Logging an error from Python handler" |
----------------------------------------------------------------------------------------------------------------