diff --git a/doc/source/logs.rst b/doc/source/logs.rst index 6239b93d25..79b8a3efb0 100644 --- a/doc/source/logs.rst +++ b/doc/source/logs.rst @@ -131,4 +131,5 @@ user_agent The value of the HTTP User-Agent header. Swift's proxy ``"proxy-server ".`` request_time The duration of the request. additional_info Additional useful information. +server_pid The process id of the server =================== ========================================================== diff --git a/swift/common/utils.py b/swift/common/utils.py index a2ad9f5398..218ccc2b15 100644 --- a/swift/common/utils.py +++ b/swift/common/utils.py @@ -324,13 +324,14 @@ def get_log_line(req, res, trans_time, additional_info): :returns: a properly formated line for logging. """ - return '%s - - [%s] "%s %s" %s %s "%s" "%s" "%s" %.4f "%s"' % ( + return '%s - - [%s] "%s %s" %s %s "%s" "%s" "%s" %.4f "%s" %d' % ( req.remote_addr, time.strftime('%d/%b/%Y:%H:%M:%S +0000', time.gmtime()), req.method, req.path, res.status.split()[0], res.content_length or '-', req.referer or '-', req.headers.get('x-trans-id', '-'), - req.user_agent or '-', trans_time, additional_info or '-') + req.user_agent or '-', trans_time, additional_info or '-', + os.getpid()) def get_trans_id_time(trans_id): diff --git a/test/unit/account/test_server.py b/test/unit/account/test_server.py index 26c63ebdc9..e515b3d221 100644 --- a/test/unit/account/test_server.py +++ b/test/unit/account/test_server.py @@ -1669,11 +1669,13 @@ class TestAccountController(unittest.TestCase): with mock.patch( 'time.time', mock.MagicMock(side_effect=[10000.0, 10001.0, 10002.0])): - req.get_response(self.controller) + with mock.patch( + 'os.getpid', mock.MagicMock(return_value=1234)): + req.get_response(self.controller) self.assertEqual( self.controller.logger.log_dict['info'], [(('1.2.3.4 - - [01/Jan/1970:02:46:41 +0000] "HEAD /sda1/p/a" 404 ' - '- "-" "-" "-" 2.0000 "-"',), {})]) + '- "-" "-" "-" 2.0000 "-" 1234',), {})]) def test_policy_stats_with_legacy(self): ts = itertools.count() diff --git a/test/unit/common/test_utils.py b/test/unit/common/test_utils.py index f2f5a84c07..899fcc0169 100644 --- a/test/unit/common/test_utils.py +++ b/test/unit/common/test_utils.py @@ -2574,14 +2574,17 @@ cluster_dfw1 = http://dfw1.host/v1/ res = Response() trans_time = 1.2 additional_info = 'some information' + server_pid = 1234 exp_line = '1.2.3.4 - - [01/Jan/1970:02:46:41 +0000] "HEAD ' \ - '/sda1/p/a/c/o" 200 - "-" "-" "-" 1.2000 "some information"' + '/sda1/p/a/c/o" 200 - "-" "-" "-" 1.2000 "some information" 1234' with mock.patch( 'time.gmtime', mock.MagicMock(side_effect=[time.gmtime(10001.0)])): - self.assertEquals( - exp_line, - utils.get_log_line(req, res, trans_time, additional_info)) + with mock.patch( + 'os.getpid', mock.MagicMock(return_value=server_pid)): + self.assertEquals( + exp_line, + utils.get_log_line(req, res, trans_time, additional_info)) def test_cache_from_env(self): # should never get logging when swift.cache is found diff --git a/test/unit/container/test_server.py b/test/unit/container/test_server.py index 7a9b7b7859..e96b443b52 100644 --- a/test/unit/container/test_server.py +++ b/test/unit/container/test_server.py @@ -2542,11 +2542,13 @@ class TestContainerController(unittest.TestCase): with mock.patch( 'time.time', mock.MagicMock(side_effect=[10000.0, 10001.0, 10002.0])): - req.get_response(self.controller) + with mock.patch( + 'os.getpid', mock.MagicMock(return_value=1234)): + req.get_response(self.controller) self.assertEqual( self.controller.logger.log_dict['info'], [(('1.2.3.4 - - [01/Jan/1970:02:46:41 +0000] "HEAD /sda1/p/a/c" ' - '404 - "-" "-" "-" 2.0000 "-"',), {})]) + '404 - "-" "-" "-" 2.0000 "-" 1234',), {})]) @patch_policies([ diff --git a/test/unit/obj/test_server.py b/test/unit/obj/test_server.py index 67c24dd743..0916e0513d 100755 --- a/test/unit/obj/test_server.py +++ b/test/unit/obj/test_server.py @@ -3909,14 +3909,17 @@ class TestObjectController(unittest.TestCase): with mock.patch('time.time', mock.MagicMock(side_effect=[10000.0, 10001.0])): - response = self.object_controller.__call__( - env, start_response) - self.assertEqual(response, answer) - self.assertEqual( - self.object_controller.logger.log_dict['info'], - [(('None - - [01/Jan/1970:02:46:41 +0000] "PUT' - ' /sda1/p/a/c/o" 405 - "-" "-" "-" 1.0000 "-"',), - {})]) + with mock.patch('os.getpid', + mock.MagicMock(return_value=1234)): + response = self.object_controller.__call__( + env, start_response) + self.assertEqual(response, answer) + self.assertEqual( + self.object_controller.logger.log_dict['info'], + [(('None - - [01/Jan/1970:02:46:41 +0000] "PUT' + ' /sda1/p/a/c/o" 405 - "-" "-" "-" 1.0000 "-"' + ' 1234',), + {})]) def test_not_utf8_and_not_logging_requests(self): inbuf = StringIO() @@ -4059,11 +4062,13 @@ class TestObjectController(unittest.TestCase): with mock.patch( 'time.time', mock.MagicMock(side_effect=[10000.0, 10001.0, 10002.0])): - req.get_response(self.object_controller) + with mock.patch( + 'os.getpid', mock.MagicMock(return_value=1234)): + req.get_response(self.object_controller) self.assertEqual( self.object_controller.logger.log_dict['info'], [(('1.2.3.4 - - [01/Jan/1970:02:46:41 +0000] "HEAD /sda1/p/a/c/o" ' - '404 - "-" "-" "-" 2.0000 "-"',), {})]) + '404 - "-" "-" "-" 2.0000 "-" 1234',), {})]) @patch_policies([storage_policy.StoragePolicy(0, 'zero', True), storage_policy.StoragePolicy(1, 'one', False)])