Skip to content

Commit

Permalink
closes #1: Found that gunicorn logger not passed in logging object, b…
Browse files Browse the repository at this point in the history
…ut as data in event dict.
  • Loading branch information
nralbers committed Sep 15, 2019
1 parent b65b25e commit 788fce8
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 5 deletions.
38 changes: 38 additions & 0 deletions gunicorn.conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import structlog
import structlog_extensions

# --- Structlog logging initialisation code

pre_chain = [
# Add the log level and a timestamp to the event_dict if the log entry
# is not from structlog.
structlog.stdlib.add_log_level,
structlog.stdlib.add_logger_name,
structlog_extensions.processors.CombinedLogParser("gunicorn.access")
]

logconfig_dict = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"json_formatter": {
"()": structlog.stdlib.ProcessorFormatter,
"processor": structlog.processors.JSONRenderer(),
"foreign_pre_chain": pre_chain,
}
},
"handlers": {
"error_console": {
"class": "logging.StreamHandler",
"formatter": "json_formatter",
},
"console": {
"class": "logging.StreamHandler",
"formatter": "json_formatter",
}
},
}

accesslog = '-'
errorlog = '-'
bind = '0.0.0.0:5000'
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from setuptools import setup

KEYWORDS = ["logging", "structured", "structure", "log","ecs","apache-combined-log"]
KEYWORDS = ["logging", "structured", "structure", "log", "ecs", "apache-combined-log"]

with open("README.rst", "r") as fh:
long_description = fh.read()

setup(
name='structlog-extensions-nralbers',
version='1.0.2',
version='1.0.3',
packages=['structlog_extensions'],
url='https://structlog-extensions-nralbers.readthedocs.io/en/latest/',
project_urls={
Expand Down
10 changes: 7 additions & 3 deletions structlog_extensions/processors.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,20 @@ def __init__(self, target_logger):

def __call__(self, logger, method_name, event_dict):
try:
if logger and logger.name == self.target_logger:
record = event_dict.get("_record")
if record is None:
logger_name = logger.name
else:
logger_name = record.name
if logger_name == self.target_logger:
if method_name in ['info', 'warn', 'warning', 'error', 'critical', 'debug']:
severity = getattr(logging, method_name.upper())
else:
severity = 0
original_event = event_dict['event']
ecs_fields = convert_combined_log_to_ecs(log_line=original_event, dataset=logger.name,
ecs_fields = convert_combined_log_to_ecs(log_line=original_event, dataset=logger_name,
severity=severity)
event_dict.update(ecs_fields)

finally:
return event_dict

Expand Down
Empty file added test_flask/__init__.py
Empty file.
10 changes: 10 additions & 0 deletions test_flask/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from flask import Flask
app = Flask(__name__)


@app.route('/')
def hello_world():
return 'Hello, World!'

if __name__ == '__main__':
app.run()
4 changes: 4 additions & 0 deletions test_flask/wsgi.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from .app import app

if __name__ == "__main__":
app.run()

0 comments on commit 788fce8

Please sign in to comment.