Logging the literal string "None" is silently dropped (payload becomes empty)
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 85/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- python
- Domínio
- observability
Direção de pesquisa
Comece em google/cloud/logging_v2/handlers/handlers.py, em _format_and_parse_message, e depois execute a reprodução fornecida de LogRecord para "None", "hello" e "". Está concluído quando a string literal "None" permanecer no payload analisado, enquanto os casos existentes mantiverem os resultados esperados.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
- I determined this is the correct repository in which to report this bug.
Summary of the issue
Context
Using CloudLoggingHandler / StructuredLogHandler via the Python standard logging module, I logged the string "None" (e.g. logging.getLogger().info("None")).
Expected Behavior:
The log entry payload should contain the text "None", just like any other string.
Actual Behavior:
The message is silently dropped: the parsed payload becomes None (empty), so the log content disappears.
API client name and version
google-cloud-logging v3.15.0 (also present on current main)
Reproduction steps: code
import logging
from google.cloud.logging_v2.handlers import handlers as H
class FakeHandler(logging.Handler):
pass
h = FakeHandler()
h.setFormatter(logging.Formatter())
def rec(msg):
return logging.LogRecord("n", logging.INFO, "p", 1, msg, (), None)
for msg in ["None", "hello", ""]:
print(repr(msg), "->", repr(H._format_and_parse_message(rec(msg), h)))
Reproduction steps: actual results
'None' -> None # the user's message is dropped
'hello' -> 'hello'
'' -> ''
Reproduction steps: expected results
'None' -> 'None' # the literal string should be preserved
'hello' -> 'hello'
'' -> ''
OS & version + platform
Any (logic bug, platform-independent)
Python environment
Python 3.12
Additional context
Root cause in google/cloud/logging_v2/handlers/handlers.py (_format_and_parse_message):
if message != "None":
passed_json_fields["message"] = message
...
return message if message != "None" else None
The intent appears to be detecting a record whose msg is the Python object None (which logging.Formatter renders as the string "None"). But comparing the formatted string against "None" also matches a legitimate user message of the literal text "None", dropping it. Detecting emptiness from record.msg is None (before formatting) rather than from the formatted output would avoid the false positive.
- Linguagem predominante
- Python
- Estrelas
- 5.4k
- Forks
- 1.8k
- Merge médio
- 1d 17h
- PRs com merge (30d)
- 93
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de googleapis/google-cloud-python
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
googleapis/google-cloud-python#18428 ·
-
priority: p2 type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
googleapis/google-cloud-python#18375 · 1 comentário ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 76/100
googleapis/google-cloud-python#18339 ·
-
auth priority: p2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
googleapis/google-cloud-python#18315 ·
-
priority: p2 type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
googleapis/google-cloud-python#18260 ·
Todas as issues de googleapis/google-cloud-python
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100