How to add a bunch of defaults to python/django logging
I would like to add in the following for every log entry:
user
request_method
status
The only way I've seen to be able to do this is a bit of a hackish way, which is to pass them as args
, because that's picked up by the django formatter (I don't see any place where you can pass kwargs -- https://docs.python.org/3/library/logging.html#formatter-objects). Here's an example:
log.info("hi", "user": str(request.user))
And the following formatter:
'format': '"message": "%(message)s", "extra": "%(args)s"',
When I parse the log I do something like this:
info =
'message': message
data = ast.literal_eval(extra)
for k,v in extra.items():
info[k] = v
It seems pretty ghetto -- is there a better way to do this, for example, a way to get the kwargs in the formatter? When I try doing something like:
log.info("hi", extra = "user": str(request.user))
It either errors, or doesn't pass in the args
(obviously).
python django logging
add a comment |
I would like to add in the following for every log entry:
user
request_method
status
The only way I've seen to be able to do this is a bit of a hackish way, which is to pass them as args
, because that's picked up by the django formatter (I don't see any place where you can pass kwargs -- https://docs.python.org/3/library/logging.html#formatter-objects). Here's an example:
log.info("hi", "user": str(request.user))
And the following formatter:
'format': '"message": "%(message)s", "extra": "%(args)s"',
When I parse the log I do something like this:
info =
'message': message
data = ast.literal_eval(extra)
for k,v in extra.items():
info[k] = v
It seems pretty ghetto -- is there a better way to do this, for example, a way to get the kwargs in the formatter? When I try doing something like:
log.info("hi", extra = "user": str(request.user))
It either errors, or doesn't pass in the args
(obviously).
python django logging
add a comment |
I would like to add in the following for every log entry:
user
request_method
status
The only way I've seen to be able to do this is a bit of a hackish way, which is to pass them as args
, because that's picked up by the django formatter (I don't see any place where you can pass kwargs -- https://docs.python.org/3/library/logging.html#formatter-objects). Here's an example:
log.info("hi", "user": str(request.user))
And the following formatter:
'format': '"message": "%(message)s", "extra": "%(args)s"',
When I parse the log I do something like this:
info =
'message': message
data = ast.literal_eval(extra)
for k,v in extra.items():
info[k] = v
It seems pretty ghetto -- is there a better way to do this, for example, a way to get the kwargs in the formatter? When I try doing something like:
log.info("hi", extra = "user": str(request.user))
It either errors, or doesn't pass in the args
(obviously).
python django logging
I would like to add in the following for every log entry:
user
request_method
status
The only way I've seen to be able to do this is a bit of a hackish way, which is to pass them as args
, because that's picked up by the django formatter (I don't see any place where you can pass kwargs -- https://docs.python.org/3/library/logging.html#formatter-objects). Here's an example:
log.info("hi", "user": str(request.user))
And the following formatter:
'format': '"message": "%(message)s", "extra": "%(args)s"',
When I parse the log I do something like this:
info =
'message': message
data = ast.literal_eval(extra)
for k,v in extra.items():
info[k] = v
It seems pretty ghetto -- is there a better way to do this, for example, a way to get the kwargs in the formatter? When I try doing something like:
log.info("hi", extra = "user": str(request.user))
It either errors, or doesn't pass in the args
(obviously).
python django logging
python django logging
asked Nov 13 '18 at 21:50
David LDavid L
10616
10616
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I would do it by linking the request to the current thread of execution. Here's an example of how to do this:
https://nedbatchelder.com/blog/201008/global_django_requests.html
Then you can use get_request()
in your logging handler to get the request, from which you can get the user. (I'm not sure what you mean by "status")
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53290037%2fhow-to-add-a-bunch-of-defaults-to-python-django-logging%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I would do it by linking the request to the current thread of execution. Here's an example of how to do this:
https://nedbatchelder.com/blog/201008/global_django_requests.html
Then you can use get_request()
in your logging handler to get the request, from which you can get the user. (I'm not sure what you mean by "status")
add a comment |
I would do it by linking the request to the current thread of execution. Here's an example of how to do this:
https://nedbatchelder.com/blog/201008/global_django_requests.html
Then you can use get_request()
in your logging handler to get the request, from which you can get the user. (I'm not sure what you mean by "status")
add a comment |
I would do it by linking the request to the current thread of execution. Here's an example of how to do this:
https://nedbatchelder.com/blog/201008/global_django_requests.html
Then you can use get_request()
in your logging handler to get the request, from which you can get the user. (I'm not sure what you mean by "status")
I would do it by linking the request to the current thread of execution. Here's an example of how to do this:
https://nedbatchelder.com/blog/201008/global_django_requests.html
Then you can use get_request()
in your logging handler to get the request, from which you can get the user. (I'm not sure what you mean by "status")
answered Nov 14 '18 at 0:46
Chris CurveyChris Curvey
3,06642843
3,06642843
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53290037%2fhow-to-add-a-bunch-of-defaults-to-python-django-logging%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown