Slide 1

Slide 1 text

Logs with context

Slide 2

Slide 2 text

@eloycoto 2008 2011 2013

Slide 3

Slide 3 text

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) log = logging.getLogger("pyday") @app.route("/auth/login", methods=['POST', 'GET']) def auth_login(): if not login(request.form.get('username'), request.form.get('pwd')): log.warn("User can't log in") return Response("OK", 403) if is_user_disabled(request.form.get('username')): log.warn("User is disabled") return Response("OK", 403) log.info("User log in correctly") return Response("OK", 200) Typical login application

Slide 4

Slide 4 text

INFO:pyday:User log in correctly INFO:pyday:User log in correctly INFO:pyday:User log in correctly WARNING:pyday:User can't log in WARNING:pyday:User can't log in INFO:pyday:User log in correctly INFO:pyday:User log in correctly WARNING:pyday:User can't log in WARNING:pyday:User is disabled WARNING:pyday:User can't log in Log output What? Who? Where? When?

Slide 5

Slide 5 text

INFO:pyday:User='aindustriosa' is trying to log in. INFO:pyday:User='aindustriosa' login correctly @app.route("/auth/login", methods=['POST', 'GET']) def auth_login(): user = request.form.get('username') log.info("User='{0}' is trying to log in.".format(user)) if not login(user, request.form.get('pwd')): log.msg("User='{0}' can't log in") return Response("OK", 403) if is_user_disabled(request.form.get('username')): log.msg("User='{0}' is disabled".format(user)) return Response("OK", 403) log.info("User='{0}' login correctly".format(user)) return Response("OK", 200)

Slide 6

Slide 6 text

Log output user = “Aindustriosa” log.info("User {0} is trying to log in.".format(user)) INFO:pyday:User Aindustriosa is trying to log in. user = “ Aindustriosa” log.info("User {0} is trying to log in.".format(user)) INFO:pyday:User Aindustriosa is trying to log in. user = “ Aindustriosa” log.info("User ‘{0}’ is trying to log in.".format(user)) INFO:pyday:User ‘ Aindustriosa’ is trying to log in.

Slide 7

Slide 7 text

from structlog import get_logger slog = get_logger() @app.route("/auth/login", methods=['POST', 'GET']) @RID def auth_login(): user = request.form.get('username') log = slog.bind(user=user, rid=session.get('rid')) if not login(user, request.form.get('pwd')): log.warn("User can't log in") return Response("OK", 403) if is_user_disabled(request.form.get('username')): log.warn("User is disabled".format(user)) return Response("OK", 403) log.info("User login correctly".format(user)) return Response("OK", 200) Structlog

Slide 8

Slide 8 text

2017-06-10 11:51.27 User login correctly \n rid=a79f21dc-0f91-4667-8ec7-56e319047be7 \n user=u'aindustriosa' view=auth.login \n When What Who Where

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Email: [email protected] Blog: http://acalustra.com Twitter: @eloycoto Graciñas!