)]}'
{"doc/source/user/guidelines.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":".. note::"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  The following definitions were originally taken from `a popular"},{"line_number":52,"context_line":"  answer on StackOverflow \u003chttp://stackoverflow.com/a/2031209\u003e`."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"``DEBUG``"},{"line_number":55,"context_line":"  Shows everything and is likely not suitable for normal production"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_3d7cb081","line":52,"range":{"start_line":51,"start_character":55,"end_line":52,"end_character":63},"updated":"2019-06-13 15:34:39.000000000","message":"This isn\u0027t rendering as a link. I think tacking an underscore (or two??) on the end would do it.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":".. note::"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  The following definitions were originally taken from `a popular"},{"line_number":52,"context_line":"  answer on StackOverflow \u003chttp://stackoverflow.com/a/2031209\u003e`."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"``DEBUG``"},{"line_number":55,"context_line":"  Shows everything and is likely not suitable for normal production"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_735d7913","line":52,"range":{"start_line":51,"start_character":55,"end_line":52,"end_character":63},"in_reply_to":"9fb8cfa7_3d7cb081","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  as part of normal work."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"``INFO``"},{"line_number":106,"context_line":"  Normal status messages showing measureable units of positive work"},{"line_number":107,"context_line":"  passing through under normal functioning of the system.  Should not"},{"line_number":108,"context_line":"  be so verbose as to overwhelm real signal with noise.  Should not be"},{"line_number":109,"context_line":"  continuous \"I\u0027m alive!\" messages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_fdf4d8f2","line":106,"range":{"start_line":106,"start_character":45,"end_line":106,"end_character":67},"updated":"2019-06-13 15:34:39.000000000","message":"could add \"See `Log messages at INFO` for more...\"","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  as part of normal work."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"``INFO``"},{"line_number":106,"context_line":"  Normal status messages showing measureable units of positive work"},{"line_number":107,"context_line":"  passing through under normal functioning of the system.  Should not"},{"line_number":108,"context_line":"  be so verbose as to overwhelm real signal with noise.  Should not be"},{"line_number":109,"context_line":"  continuous \"I\u0027m alive!\" messages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_1dec4c28","line":106,"range":{"start_line":106,"start_character":33,"end_line":106,"end_character":44},"updated":"2019-06-13 15:34:39.000000000","message":"measurable (throughout)","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  as part of normal work."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"``INFO``"},{"line_number":106,"context_line":"  Normal status messages showing measureable units of positive work"},{"line_number":107,"context_line":"  passing through under normal functioning of the system.  Should not"},{"line_number":108,"context_line":"  be so verbose as to overwhelm real signal with noise.  Should not be"},{"line_number":109,"context_line":"  continuous \"I\u0027m alive!\" messages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_139e7db8","line":106,"range":{"start_line":106,"start_character":33,"end_line":106,"end_character":44},"in_reply_to":"9fb8cfa7_1dec4c28","updated":"2019-06-13 16:44:51.000000000","message":"\u003e measurable (throughout)\n\nDone.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  as part of normal work."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"``INFO``"},{"line_number":106,"context_line":"  Normal status messages showing measureable units of positive work"},{"line_number":107,"context_line":"  passing through under normal functioning of the system.  Should not"},{"line_number":108,"context_line":"  be so verbose as to overwhelm real signal with noise.  Should not be"},{"line_number":109,"context_line":"  continuous \"I\u0027m alive!\" messages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_13875d64","line":106,"range":{"start_line":106,"start_character":45,"end_line":106,"end_character":67},"in_reply_to":"9fb8cfa7_fdf4d8f2","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"``DEBUG``"},{"line_number":112,"context_line":"  Developer logging level.  Only enable if you are interested in"},{"line_number":113,"context_line":"  reading through a ton of additional information about what is going"},{"line_number":114,"context_line":"  on."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``TRACE``"},{"line_number":117,"context_line":"  In functions which support this level, details every parameter and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_1dd52c44","line":114,"updated":"2019-06-13 15:34:39.000000000","message":"could add \"See `Debugging start / end` for more...\"","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":111,"context_line":"``DEBUG``"},{"line_number":112,"context_line":"  Developer logging level.  Only enable if you are interested in"},{"line_number":113,"context_line":"  reading through a ton of additional information about what is going"},{"line_number":114,"context_line":"  on."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``TRACE``"},{"line_number":117,"context_line":"  In functions which support this level, details every parameter and"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_338aa169","line":114,"in_reply_to":"9fb8cfa7_1dd52c44","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"parallel.  There are multiple workers per services, multiple instances"},{"line_number":165,"context_line":"of services in the cloud."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Examples of good and bad uses of INFO"},{"line_number":168,"context_line":"-------------------------------------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Below are some examples of good and bad uses of ``INFO``.  In the good"},{"line_number":171,"context_line":"examples we can see the \u0027noun / verb\u0027 fragment for a unit of work."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_bd48a02c","line":168,"range":{"start_line":167,"start_character":0,"end_line":168,"end_character":37},"updated":"2019-06-13 15:34:39.000000000","message":"this section seems like it should go above the previous (i.e. next to the other INFO section)","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":164,"context_line":"parallel.  There are multiple workers per services, multiple instances"},{"line_number":165,"context_line":"of services in the cloud."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Examples of good and bad uses of INFO"},{"line_number":168,"context_line":"-------------------------------------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Below are some examples of good and bad uses of ``INFO``.  In the good"},{"line_number":171,"context_line":"examples we can see the \u0027noun / verb\u0027 fragment for a unit of work."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_f37f2963","line":168,"range":{"start_line":167,"start_character":0,"end_line":168,"end_character":37},"in_reply_to":"9fb8cfa7_bd48a02c","updated":"2019-06-13 16:44:51.000000000","message":"I think it\u0027s better if the very long INFO section comes after the short INFO section, so I\u0027ve achieved this by moving the previous section up one instead.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce9990313127d91677f51589067e2e18d9467807","unresolved":false,"context_lines":[{"line_number":164,"context_line":"parallel.  There are multiple workers per services, multiple instances"},{"line_number":165,"context_line":"of services in the cloud."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Examples of good and bad uses of INFO"},{"line_number":168,"context_line":"-------------------------------------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Below are some examples of good and bad uses of ``INFO``.  In the good"},{"line_number":171,"context_line":"examples we can see the \u0027noun / verb\u0027 fragment for a unit of work."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_ceb4bcf4","line":168,"range":{"start_line":167,"start_character":0,"end_line":168,"end_character":37},"in_reply_to":"9fb8cfa7_f37f2963","updated":"2019-06-13 17:54:49.000000000","message":"Yes, I was saying the info sections should be organized as you\u0027ve done. My suggestion was to put them before the debug section, but this works fine too.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"WSGI requests"},{"line_number":239,"context_line":"~~~~~~~~~~~~~"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Should be:"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"- Logged at ``INFO`` level"},{"line_number":244,"context_line":"- Logged exactly once per request"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_9d76fc6f","line":241,"range":{"start_line":241,"start_character":7,"end_line":241,"end_character":10},"updated":"2019-06-13 15:34:39.000000000","message":"anal nit: \"be\" doesn\u0027t grammar with \"Include\"\n\nlikewise below","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":238,"context_line":"WSGI requests"},{"line_number":239,"context_line":"~~~~~~~~~~~~~"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Should be:"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"- Logged at ``INFO`` level"},{"line_number":244,"context_line":"- Logged exactly once per request"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_73c33958","line":241,"range":{"start_line":241,"start_character":7,"end_line":241,"end_character":10},"in_reply_to":"9fb8cfa7_9d76fc6f","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":247,"context_line":"The last point is notable, because some ``POST`` API requests don\u0027t"},{"line_number":248,"context_line":"include enough information in the URL alone to determine what the"},{"line_number":249,"context_line":"API did.  For instance, Nova server actions (where ``POST`` includes a"},{"line_number":250,"context_line":"method name)."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Rationale: Operators should be able to easily see what API requests"},{"line_number":253,"context_line":"their users are making in their cloud to understand the usage patterns"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_3d34b092","line":250,"updated":"2019-06-13 15:34:39.000000000","message":"Are you suggesting that POST request payloads should always be logged at INFO level? That seems like it could be excessive. Perhaps more appropriate to bust this down to \"recommended, if it\u0027s not too big\".","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":247,"context_line":"The last point is notable, because some ``POST`` API requests don\u0027t"},{"line_number":248,"context_line":"include enough information in the URL alone to determine what the"},{"line_number":249,"context_line":"API did.  For instance, Nova server actions (where ``POST`` includes a"},{"line_number":250,"context_line":"method name)."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Rationale: Operators should be able to easily see what API requests"},{"line_number":253,"context_line":"their users are making in their cloud to understand the usage patterns"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_d3ca259f","line":250,"in_reply_to":"9fb8cfa7_3d34b092","updated":"2019-06-13 16:44:51.000000000","message":"Reminder - Sean Dague wrote this not me :-)  But it doesn\u0027t explicitly say that payloads should be logged, so no, I don\u0027t think it suggests that.  It says it should include *enough* information to know what the request was.  But I\u0027ve added a caveat about not including too much.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce9990313127d91677f51589067e2e18d9467807","unresolved":false,"context_lines":[{"line_number":247,"context_line":"The last point is notable, because some ``POST`` API requests don\u0027t"},{"line_number":248,"context_line":"include enough information in the URL alone to determine what the"},{"line_number":249,"context_line":"API did.  For instance, Nova server actions (where ``POST`` includes a"},{"line_number":250,"context_line":"method name)."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Rationale: Operators should be able to easily see what API requests"},{"line_number":253,"context_line":"their users are making in their cloud to understand the usage patterns"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_2ed9d855","line":250,"in_reply_to":"9fb8cfa7_d3ca259f","updated":"2019-06-13 17:54:49.000000000","message":"okay, I didn\u0027t go back and check which bits were straight copied and which were added/tweaked by you. nbd.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"Should be:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"- Logged at ``WARN`` level"},{"line_number":262,"context_line":"- Logged exactly once per service start (not on every request through"},{"line_number":263,"context_line":"  code)"},{"line_number":264,"context_line":"- Include directions on what to do to migrate from the deprecated"},{"line_number":265,"context_line":"  state"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_bd1f4006","line":262,"range":{"start_line":262,"start_character":22,"end_line":262,"end_character":39},"updated":"2019-06-13 15:34:39.000000000","message":"If it\u0027s not a config thing, or otherwise can\u0027t be detected at startup, it needs to be logged when the deprecated code path is hit. It may or may not be appropriate to do this every time; and if we want to do it just once, it may be tricky to keep track of having already done it. So the lingo should be more forgiving for that scenario.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":259,"context_line":"Should be:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"- Logged at ``WARN`` level"},{"line_number":262,"context_line":"- Logged exactly once per service start (not on every request through"},{"line_number":263,"context_line":"  code)"},{"line_number":264,"context_line":"- Include directions on what to do to migrate from the deprecated"},{"line_number":265,"context_line":"  state"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_f3b729f4","line":262,"range":{"start_line":262,"start_character":22,"end_line":262,"end_character":39},"in_reply_to":"9fb8cfa7_bd1f4006","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0c3e483d7793b4d81a71e69e46225b8612682d5a","unresolved":false,"context_lines":[{"line_number":335,"context_line":"References"},{"line_number":336,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"- Documentation on usage of ``oslo.log`` -"},{"line_number":339,"context_line":"  https://docs.openstack.org/oslo.log/latest/user/index.html"},{"line_number":340,"context_line":"- Security Log Guidelines -"},{"line_number":341,"context_line":"  https://wiki.openstack.org/wiki/Security/Guidelines/logging_guidelines"},{"line_number":342,"context_line":"- Wiki page for basic logging standards proposal developed early in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_9d803cf7","line":339,"range":{"start_line":338,"start_character":2,"end_line":339,"end_character":60},"updated":"2019-06-13 15:34:39.000000000","message":"This now points to the parent of this doc, which is already in the TOC. Can be removed.","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"98bb676b7b9d1e1e97ada31bb2afa6dc488639c4","unresolved":false,"context_lines":[{"line_number":335,"context_line":"References"},{"line_number":336,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"- Documentation on usage of ``oslo.log`` -"},{"line_number":339,"context_line":"  https://docs.openstack.org/oslo.log/latest/user/index.html"},{"line_number":340,"context_line":"- Security Log Guidelines -"},{"line_number":341,"context_line":"  https://wiki.openstack.org/wiki/Security/Guidelines/logging_guidelines"},{"line_number":342,"context_line":"- Wiki page for basic logging standards proposal developed early in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_33a701c0","line":339,"range":{"start_line":338,"start_character":2,"end_line":339,"end_character":60},"in_reply_to":"9fb8cfa7_9d803cf7","updated":"2019-06-13 16:44:51.000000000","message":"Done","commit_id":"82a4183ca4e97803e775938b7108d165dd338c1f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce9990313127d91677f51589067e2e18d9467807","unresolved":false,"context_lines":[{"line_number":49,"context_line":".. note::"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  The following definitions were originally taken from `a popular"},{"line_number":52,"context_line":"  answer on StackOverflow \u003chttp://stackoverflow.com/a/2031209\u003e`_."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"``DEBUG``"},{"line_number":55,"context_line":"  Shows everything and is likely not suitable for normal production"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_eeac20a0","line":52,"range":{"start_line":52,"start_character":63,"end_line":52,"end_character":64},"updated":"2019-06-13 17:54:49.000000000","message":"✔","commit_id":"57507a59ff7f3bc40ef53b506542b7051a8d9352"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce9990313127d91677f51589067e2e18d9467807","unresolved":false,"context_lines":[{"line_number":251,"context_line":"include enough information in the URL alone to determine what the"},{"line_number":252,"context_line":"API did.  For instance, Nova server actions (where ``POST`` includes a"},{"line_number":253,"context_line":"method name), although including ``POST`` request payloads could be"},{"line_number":254,"context_line":"excessive, so common sense should be exercised."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"**Rationale:** Operators should be able to easily see what API"},{"line_number":257,"context_line":"requests their users are making in their cloud to understand the usage"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_cee59cdd","line":254,"updated":"2019-06-13 17:54:49.000000000","message":"nice","commit_id":"57507a59ff7f3bc40ef53b506542b7051a8d9352"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ce9990313127d91677f51589067e2e18d9467807","unresolved":false,"context_lines":[{"line_number":265,"context_line":"- Where possible, should be logged exactly once per service start (not"},{"line_number":266,"context_line":"  on every request through code).  However it may be tricky to keep"},{"line_number":267,"context_line":"  track of whether a warning was already issued, so common sense should"},{"line_number":268,"context_line":"  dictate the best approach."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"- Should include directions on what to do to migrate from the"},{"line_number":271,"context_line":"  deprecated state."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9fb8cfa7_eee8a0b3","line":268,"updated":"2019-06-13 17:54:49.000000000","message":"✔","commit_id":"57507a59ff7f3bc40ef53b506542b7051a8d9352"}]}
