)]}'
{"doc/source/configfiles/example_nova.rst":[{"author":{"_account_id":19814,"name":"Travis Truman (automagically)","email":"travis_truman@cable.comcast.com","username":"trumant"},"change_message_id":"289efeaacb39c64910150f931c266d669c971cad","unresolved":false,"context_lines":[{"line_number":21,"context_line":"   :language: ini"},{"line_number":22,"context_line":"   :lines: 4-5"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"And two formatters are created to be used based on whether the logging"},{"line_number":25,"context_line":"location will have OpenStack request context information available or"},{"line_number":26,"context_line":"not."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_9d08d829","line":24,"updated":"2016-07-21 15:17:06.000000000","message":"The example now shows 3 formatters","commit_id":"389401c7c0f2e5887c294fca416f16e9fc86dd13"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"   :language: ini"},{"line_number":22,"context_line":"   :lines: 4-5"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"And three formatters are created to be used based on whether the logging"},{"line_number":25,"context_line":"location will have OpenStack request context information available or"},{"line_number":26,"context_line":"not."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3ac371cc_f63573f7","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":9},"updated":"2016-08-15 10:45:20.000000000","message":"Better, leave this as two and append \"A Fluentd formatter is also shown.\"","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"   :language: ini"},{"line_number":22,"context_line":"   :lines: 4-5"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"And three formatters are created to be used based on whether the logging"},{"line_number":25,"context_line":"location will have OpenStack request context information available or"},{"line_number":26,"context_line":"not."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3ac371cc_a6ff22a9","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":9},"in_reply_to":"3ac371cc_f63573f7","updated":"2016-08-16 02:32:41.000000000","message":"Done","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"}],"doc/source/configfiles/nova_sample.conf":[{"author":{"_account_id":14764,"name":"Yuki Nishiwaki","email":"uckey.1067@gmail.com","username":"ukinau"},"change_message_id":"f020c711d10257e9d329ff6df73d75c8f8600e54","unresolved":false,"context_lines":[{"line_number":89,"context_line":"format \u003d %(message)s"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"[formatter_fluent]"},{"line_number":92,"context_line":"class \u003d fluent.handler.FluentRecordFormatter"}],"source_content_type":"text/plain","patch_set":4,"id":"7a5de9d1_a477be9e","line":92,"range":{"start_line":92,"start_character":23,"end_line":92,"end_character":44},"updated":"2016-02-01 08:27:49.000000000","message":"This is a minute thing, but this may be fault.\nThis should be change as following in order to use your patch\n\n\"class \u003d oslo_log.formatters.FluentFormatter\"","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"}],"oslo_log/formatters.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"1653ebc08cbf353e8f85183bd16380dc3f325c0b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return jsonutils.dumps(message)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class FluentFormatter(logging.Formatter):"},{"line_number":127,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"},{"line_number":128,"context_line":"        # NOTE(masaki) we ignore the fmt argument because of same reason with"},{"line_number":129,"context_line":"        #               JSONFormatter."}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_b6802848","line":126,"updated":"2015-10-05 14:03:03.000000000","message":"Could you add a docstring here describing what the class is?\n\nWe should also figure out where to put documentation explaining how to actually use the class and set up fluentd integration. It would be useful to have that in the documentation here in this repository.","commit_id":"6df9664c20b2ed71c9386a4f7d48d2889f692d09"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"83c95c2136157b1413e497bff9f1880baeb1bc7b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return jsonutils.dumps(message)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"class FluentFormatter(logging.Formatter):"},{"line_number":127,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"},{"line_number":128,"context_line":"        # NOTE(masaki) we ignore the fmt argument because of same reason with"},{"line_number":129,"context_line":"        #               JSONFormatter."}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_4e3b17ec","line":126,"in_reply_to":"7a2fa921_b6802848","updated":"2015-10-06 09:07:08.000000000","message":"I see. I added some description and documentation.","commit_id":"6df9664c20b2ed71c9386a4f7d48d2889f692d09"},{"author":{"_account_id":14764,"name":"Yuki Nishiwaki","email":"uckey.1067@gmail.com","username":"ukinau"},"change_message_id":"c33d12352d420183190cc78ce2c5332b7b5ad1ad","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    \"\"\"A formatter for fluentd."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    format() returns dict, not string."},{"line_number":130,"context_line":"    It expects to be used by fluent.handler.FluentRecordFormatter."},{"line_number":131,"context_line":"    (included in fluent-logger-python)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_c4bc3abd","line":130,"range":{"start_line":130,"start_character":29,"end_line":130,"end_character":66},"updated":"2016-02-01 08:36:41.000000000","message":"This may be fault. you should change to \n\"fluent.handler.FluentHandler\"","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"ee0649f1724ef94f5d00e9e78731b6973b1dbd3c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    format() returns dict, not string."},{"line_number":130,"context_line":"    It expects to be used by fluent.handler.FluentRecordFormatter."},{"line_number":131,"context_line":"    (included in fluent-logger-python)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    \"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_8cb674f7","line":132,"updated":"2015-10-22 10:14:28.000000000","message":"You may add:\n\n.. versionadded:: 1.14","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"e7b9698a3a0bec4ddc9b04cd362ded8581469327","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.12"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_4bb75186","line":171,"range":{"start_line":171,"start_character":22,"end_line":171,"end_character":26},"updated":"2016-07-19 07:06:31.000000000","message":"3.12 was already released. This needs to be 3.13","commit_id":"2ee78e157c9d2177aba6a7b190a0d6efed99ddfc"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"0fcac2157f7949b53bd232d22417cb340a7f2e91","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.12"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_7acdc05c","line":171,"range":{"start_line":171,"start_character":22,"end_line":171,"end_character":26},"in_reply_to":"dada55a8_4bb75186","updated":"2016-07-19 07:43:43.000000000","message":"Done","commit_id":"2ee78e157c9d2177aba6a7b190a0d6efed99ddfc"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"dd6fd6c122cea68ad574bb5a8c00515eb8b057d7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    \"\"\"A formatter for fluentd."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    format() returns dict, not string."},{"line_number":168,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.13"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_0489ce26","line":168,"updated":"2016-07-28 15:30:08.000000000","message":"Why not bake it in then? It\u0027s not very nice having a Formatter that doesn\u0027t respect the Formatter interface.","commit_id":"b9c9e6f33f92e086f7bbe6cc0f1afbcf38a69961"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c65da90bdec7e07e1f9f81ab3fed8d3f4d9e0415","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    \"\"\"A formatter for fluentd."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    format() returns dict, not string."},{"line_number":168,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.13"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_a4028209","line":168,"in_reply_to":"bacf61ea_0489ce26","updated":"2016-07-28 15:32:19.000000000","message":"Oh I see fluentd have supplied a (noncompliant) handler but not a formatter. OK v_v","commit_id":"b9c9e6f33f92e086f7bbe6cc0f1afbcf38a69961"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"dd6fd6c122cea68ad574bb5a8c00515eb8b057d7","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            lines \u003d [moves.filter("},{"line_number":188,"context_line":"                lambda x: x,"},{"line_number":189,"context_line":"                line.rstrip().splitlines()) for line in lines]"},{"line_number":190,"context_line":"            lines \u003d list(itertools.chain(*lines))"},{"line_number":191,"context_line":"        return lines"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def format(self, record):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_64508a5f","line":190,"updated":"2016-07-28 15:30:08.000000000","message":"this confuses me. Filtering with \"lambda x: x\" doesn\u0027t do anything? Maybe this would be better as a reduce?\n\n  lines \u003d reduce(lambda lines, line: lines + line.rstrip.splitlines(), [])","commit_id":"b9c9e6f33f92e086f7bbe6cc0f1afbcf38a69961"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.13"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_113779b1","line":171,"range":{"start_line":171,"start_character":24,"end_line":171,"end_character":26},"updated":"2016-08-15 10:45:20.000000000","message":"3.15 now","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    (included in fluent-logger-python)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    .. versionadded:: 3.13"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_d155e1c6","line":172,"updated":"2016-08-15 10:45:20.000000000","message":"nit remove blank line","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        except socket.error:"},{"line_number":182,"context_line":"            self.hostname \u003d None"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def formatException(self, ei, strip_newlines\u003dTrue):"},{"line_number":185,"context_line":"        lines \u003d traceback.format_exception(*ei)"},{"line_number":186,"context_line":"        if strip_newlines:"},{"line_number":187,"context_line":"            lines \u003d [moves.filter("}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_f109fdde","line":184,"range":{"start_line":184,"start_character":30,"end_line":184,"end_character":32},"updated":"2016-08-15 10:45:20.000000000","message":"s/ei/exc_info/ please","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        except socket.error:"},{"line_number":182,"context_line":"            self.hostname \u003d None"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def formatException(self, ei, strip_newlines\u003dTrue):"},{"line_number":185,"context_line":"        lines \u003d traceback.format_exception(*ei)"},{"line_number":186,"context_line":"        if strip_newlines:"},{"line_number":187,"context_line":"            lines \u003d [moves.filter("}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_46de2e40","line":184,"range":{"start_line":184,"start_character":30,"end_line":184,"end_character":32},"in_reply_to":"3ac371cc_f109fdde","updated":"2016-08-16 02:32:41.000000000","message":"Done","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def formatException(self, ei, strip_newlines\u003dTrue):"},{"line_number":185,"context_line":"        lines \u003d traceback.format_exception(*ei)"},{"line_number":186,"context_line":"        if strip_newlines:"},{"line_number":187,"context_line":"            lines \u003d [moves.filter("},{"line_number":188,"context_line":"                lambda x: x,"},{"line_number":189,"context_line":"                line.rstrip().splitlines()) for line in lines]"},{"line_number":190,"context_line":"            lines \u003d list(itertools.chain(*lines))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_31b555cd","line":187,"updated":"2016-08-15 10:45:20.000000000","message":"why are you using filter with an identity function?","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def formatException(self, ei, strip_newlines\u003dTrue):"},{"line_number":185,"context_line":"        lines \u003d traceback.format_exception(*ei)"},{"line_number":186,"context_line":"        if strip_newlines:"},{"line_number":187,"context_line":"            lines \u003d [moves.filter("},{"line_number":188,"context_line":"                lambda x: x,"},{"line_number":189,"context_line":"                line.rstrip().splitlines()) for line in lines]"},{"line_number":190,"context_line":"            lines \u003d list(itertools.chain(*lines))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_463c6ee2","line":187,"in_reply_to":"3ac371cc_31b555cd","updated":"2016-08-16 02:32:41.000000000","message":"Well, I used the same code as JSONFormatter.\nHowever, it doesn’t make sense.","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            lines \u003d [moves.filter("},{"line_number":188,"context_line":"                lambda x: x,"},{"line_number":189,"context_line":"                line.rstrip().splitlines()) for line in lines]"},{"line_number":190,"context_line":"            lines \u003d list(itertools.chain(*lines))"},{"line_number":191,"context_line":"        return lines"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def format(self, record):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_117939fd","line":190,"updated":"2016-08-15 10:45:20.000000000","message":"this might all be easier with a reduce, does this work?\n\n  lines \u003d reduce(lambda a, line: a + line.rstrip().splitlines(),\n                 lines, [])","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            lines \u003d [moves.filter("},{"line_number":188,"context_line":"                lambda x: x,"},{"line_number":189,"context_line":"                line.rstrip().splitlines()) for line in lines]"},{"line_number":190,"context_line":"            lines \u003d list(itertools.chain(*lines))"},{"line_number":191,"context_line":"        return lines"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def format(self, record):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_a119cc7b","line":190,"in_reply_to":"3ac371cc_117939fd","updated":"2016-08-16 02:32:41.000000000","message":"It totally works and it\u0027s simple.\nThank you.","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3685dc21250ce7fc257eef84a75d8bade66f264b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":170,"context_line":"    (included in fluent-logger-python)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    .. versionadded:: 3.15"},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a89bdaa_4967f54c","line":172,"range":{"start_line":172,"start_character":22,"end_line":172,"end_character":26},"updated":"2016-09-07 01:21:14.000000000","message":"Should be 3.17 now.","commit_id":"fbac92c613d535a35e34a23c058388345502dc2b"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"d4e5e8d2cc077567f4382f562414638bfe88ed59","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    It expects to be used by fluent.handler.FluentHandler."},{"line_number":170,"context_line":"    (included in fluent-logger-python)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    .. versionadded:: 3.15"},{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a89bdaa_a927a1c8","line":172,"range":{"start_line":172,"start_character":22,"end_line":172,"end_character":26},"in_reply_to":"9a89bdaa_4967f54c","updated":"2016-09-07 01:27:22.000000000","message":"Done","commit_id":"fbac92c613d535a35e34a23c058388345502dc2b"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3685dc21250ce7fc257eef84a75d8bade66f264b","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"},{"line_number":176,"context_line":"        # NOTE(masaki) we ignore the fmt argument because of same reason with"},{"line_number":177,"context_line":"        #               JSONFormatter."},{"line_number":178,"context_line":"        self.datefmt \u003d datefmt"},{"line_number":179,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a89bdaa_e94c49ca","line":176,"range":{"start_line":176,"start_character":58,"end_line":176,"end_character":60},"updated":"2016-09-07 01:21:14.000000000","message":"of the","commit_id":"fbac92c613d535a35e34a23c058388345502dc2b"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"d4e5e8d2cc077567f4382f562414638bfe88ed59","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    \"\"\""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def __init__(self, fmt\u003dNone, datefmt\u003dNone):"},{"line_number":176,"context_line":"        # NOTE(masaki) we ignore the fmt argument because of same reason with"},{"line_number":177,"context_line":"        #               JSONFormatter."},{"line_number":178,"context_line":"        self.datefmt \u003d datefmt"},{"line_number":179,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a89bdaa_e92d29a9","line":176,"range":{"start_line":176,"start_character":58,"end_line":176,"end_character":60},"in_reply_to":"9a89bdaa_e94c49ca","updated":"2016-09-07 01:27:22.000000000","message":"Done","commit_id":"fbac92c613d535a35e34a23c058388345502dc2b"}],"oslo_log/tests/unit/test_log.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"618d4be342743d9978c2654c876a608a8d0ba787","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            msg \u003d self.format(record)"},{"line_number":343,"context_line":"            stream \u003d self.stream"},{"line_number":344,"context_line":"            stream.write(str(msg))"},{"line_number":345,"context_line":"            stream.write(self.terminator)"},{"line_number":346,"context_line":"            self.flush()"},{"line_number":347,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_ecb8482c","line":344,"updated":"2015-10-22 10:10:51.000000000","message":"You may use jsonutils.dumps()?","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"618d4be342743d9978c2654c876a608a8d0ba787","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        except Exception:"},{"line_number":389,"context_line":"            self.log.exception(test_msg, test_data)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        data \u003d eval(self.stream.getvalue())"},{"line_number":392,"context_line":"        self.assertTrue(data)"},{"line_number":393,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":394,"context_line":"        self.assertEqual(\u0027test-fluent\u0027, data[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_2c3e40c1","line":391,"updated":"2015-10-22 10:10:51.000000000","message":"Hum, I would prefer to avoid eval() in tests. Maybe use jsonutils.load() or ast.literal_eval()?","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"618d4be342743d9978c2654c876a608a8d0ba787","unresolved":false,"context_lines":[{"line_number":389,"context_line":"            self.log.exception(test_msg, test_data)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        data \u003d eval(self.stream.getvalue())"},{"line_number":392,"context_line":"        self.assertTrue(data)"},{"line_number":393,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":394,"context_line":"        self.assertEqual(\u0027test-fluent\u0027, data[\u0027name\u0027])"},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a29b11f_6c567807","line":392,"updated":"2015-10-22 10:10:51.000000000","message":"What\u0027s the purpose of this test? Why not checking the type instead? Following lines ensure that the dict is not empty.","commit_id":"4330c35110a4f5e36d16f98c8927464ab3ac3d09"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"e7b9698a3a0bec4ddc9b04cd362ded8581469327","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            msg \u003d self.format(record)"},{"line_number":451,"context_line":"            jsonutils.dump(msg, self.stream)"},{"line_number":452,"context_line":"            self.stream.flush()"},{"line_number":453,"context_line":"        except Exception:"},{"line_number":454,"context_line":"            self.handleError(record)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_8b2669cc","line":453,"range":{"start_line":453,"start_character":15,"end_line":453,"end_character":24},"updated":"2016-07-19 07:06:31.000000000","message":"catch only specific exceptions raised. \n\nsee http://pylint-messages.wikidot.com/messages:w0703","commit_id":"2ee78e157c9d2177aba6a7b190a0d6efed99ddfc"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"0fcac2157f7949b53bd232d22417cb340a7f2e91","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            msg \u003d self.format(record)"},{"line_number":451,"context_line":"            jsonutils.dump(msg, self.stream)"},{"line_number":452,"context_line":"            self.stream.flush()"},{"line_number":453,"context_line":"        except Exception:"},{"line_number":454,"context_line":"            self.handleError(record)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_5ae8bcb4","line":453,"range":{"start_line":453,"start_character":15,"end_line":453,"end_character":24},"in_reply_to":"dada55a8_8b2669cc","updated":"2016-07-19 07:43:43.000000000","message":"Done","commit_id":"2ee78e157c9d2177aba6a7b190a0d6efed99ddfc"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":442,"context_line":""},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"class DictStreamHandler(logging.StreamHandler):"},{"line_number":445,"context_line":"    \"\"\"serialize dict in order to avoid TypeError in python 3. It is needed for"},{"line_number":446,"context_line":"    FluentFormatterTestCase."},{"line_number":447,"context_line":"    \"\"\""},{"line_number":448,"context_line":"    def emit(self, record):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_f1c0dde2","line":445,"range":{"start_line":445,"start_character":7,"end_line":445,"end_character":8},"updated":"2016-08-15 10:45:20.000000000","message":"femtonit: capitalise","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":442,"context_line":""},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"class DictStreamHandler(logging.StreamHandler):"},{"line_number":445,"context_line":"    \"\"\"serialize dict in order to avoid TypeError in python 3. It is needed for"},{"line_number":446,"context_line":"    FluentFormatterTestCase."},{"line_number":447,"context_line":"    \"\"\""},{"line_number":448,"context_line":"    def emit(self, record):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_816930c1","line":445,"range":{"start_line":445,"start_character":7,"end_line":445,"end_character":8},"in_reply_to":"3ac371cc_f1c0dde2","updated":"2016-08-16 02:32:41.000000000","message":"Done","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"066e6589140c118c99454930976a53fde40cbd6d","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        except Exception:"},{"line_number":494,"context_line":"            self.log.exception(test_msg, test_data)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        data \u003d eval(self.stream.getvalue())"},{"line_number":497,"context_line":"        self.assertTrue(data)"},{"line_number":498,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027test-fluent\u0027, data[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_31171553","line":496,"range":{"start_line":496,"start_character":15,"end_line":496,"end_character":19},"updated":"2016-08-15 10:45:20.000000000","message":"never use eval, even in tests! use jsonutils.loads?","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"c72fe958f33a321a1587084446eaabc21e262ce1","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        except Exception:"},{"line_number":494,"context_line":"            self.log.exception(test_msg, test_data)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        data \u003d eval(self.stream.getvalue())"},{"line_number":497,"context_line":"        self.assertTrue(data)"},{"line_number":498,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":499,"context_line":"        self.assertEqual(\u0027test-fluent\u0027, data[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_a1e38c32","line":496,"range":{"start_line":496,"start_character":15,"end_line":496,"end_character":19},"in_reply_to":"3ac371cc_31171553","updated":"2016-08-16 02:32:41.000000000","message":"Yes, I should use jsonutil.loads...","commit_id":"5284841aa95e5c912cbd168138410d62c768c028"}]}
