Skip to content

Commit 4172e6d

Browse files
committed
fix stuff
1 parent 4d1924f commit 4172e6d

File tree

8 files changed

+48
-69
lines changed

8 files changed

+48
-69
lines changed

logging/google/cloud/logging/handlers/app_engine.py

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,18 @@
1414

1515
"""Logging handler for App Engine Flexible
1616
17-
Logs to the well-known file that the fluentd sidecar container on App Engine
18-
Flexible is configured to read from and send to Stackdriver Logging.
19-
20-
See the fluentd configuration here:
21-
22-
https://github.com/GoogleCloudPlatform/appengine-sidecars-docker/tree/master/fluentd_logger
17+
Sends logs to the Stackdriver Logging API with the appropriate resource and labels for App Engine logs.
2318
"""
2419

25-
# This file is largely copied from:
26-
# https://github.com/GoogleCloudPlatform/python-compat-runtime/blob/master
27-
# /appengine-vmruntime/vmruntime/cloud_logging.py
28-
29-
import logging.handlers
3020
import os
3121

3222
from google.cloud.logging.handlers.handlers import CloudLoggingHandler
3323
from google.cloud.logging.handlers.transports import BackgroundThreadTransport
3424
from google.cloud.logging.resource import Resource
3525

36-
DEFAULT_LOGGER_NAME = 'python'
37-
38-
EXCLUDED_LOGGER_DEFAULTS = ('google.cloud', 'oauth2client')
39-
40-
GAE_RESOURCE = Resource(
41-
type='gae_app',
42-
labels={
43-
'project_id': os.getenv('GCLOUD_PROJECT'),
44-
'module_id': os.getenv('GAE_SERVICE'),
45-
'version_id': os.getenv('GAE_VERSION'),
46-
},
47-
)
26+
_GAE_PROJECT_ENV = 'GCLOUD_PROJECT'
27+
_GAE_SERVICE_ENV = 'GAE_SERVICE'
28+
_GAE_VERSION_ENV = 'GAE_VERSION'
4829

4930

5031
class AppEngineHandler(CloudLoggingHandler):
@@ -76,8 +57,20 @@ class AppEngineHandler(CloudLoggingHandler):
7657
to the global resource type.
7758
"""
7859

60+
DEFAULT_LOGGER_NAME = 'projects/{}/logs/app'.format(os.environ.get(_GAE_PROJECT_ENV))
61+
7962
def __init__(self, client,
80-
name=DEFAULT_LOGGER_NAME,
81-
transport=BackgroundThreadTransport,
82-
resource=GAE_RESOURCE):
83-
super(AppEngineHandler, self).__init__(client, name, transport, resource)
63+
transport=BackgroundThreadTransport):
64+
super(AppEngineHandler, self).__init__(client, name=self.DEFAULT_LOGGER_NAME,
65+
transport=transport, resource=self.get_gae_resource())
66+
67+
def get_gae_resource(self):
68+
gae_resource = Resource(
69+
type='gae_app',
70+
labels={
71+
'project_id': os.environ.get(_GAE_PROJECT_ENV),
72+
'module_id': os.environ.get(_GAE_SERVICE_ENV),
73+
'version_id': os.environ.get(_GAE_VERSION_ENV),
74+
},
75+
)
76+
return gae_resource

logging/google/cloud/logging/handlers/handlers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def __init__(self, client,
8383
self.name = name
8484
self.client = client
8585
self.transport = transport(client, name)
86-
self.resource=resource
86+
self.resource = resource
8787

8888
def emit(self, record):
8989
"""Actually log the specified logging record.
@@ -96,7 +96,7 @@ def emit(self, record):
9696
:param record: The record to be logged.
9797
"""
9898
message = super(CloudLoggingHandler, self).format(record)
99-
self.transport.send(record, message, self.resource)
99+
self.transport.send(record, message, resource=self.resource)
100100

101101

102102
def setup_logging(handler, excluded_loggers=EXCLUDED_LOGGER_DEFAULTS,

logging/google/cloud/logging/handlers/transports/background_thread.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
from six.moves import queue
2929

3030
from google.cloud.logging.handlers.transports.base import Transport
31-
from google.cloud.logging.logger import _GLOBAL_RESOURCE
3231

3332
_DEFAULT_GRACE_PERIOD = 5.0 # Seconds
3433
_DEFAULT_MAX_BATCH_SIZE = 10
@@ -258,7 +257,7 @@ def __init__(self, client, name, grace_period=_DEFAULT_GRACE_PERIOD,
258257
self.worker = _Worker(logger)
259258
self.worker.start()
260259

261-
def send(self, record, message, resource=_GLOBAL_RESOURCE):
260+
def send(self, record, message, resource=None):
262261
"""Overrides Transport.send().
263262
264263
:type record: :class:`logging.LogRecord`
@@ -272,7 +271,7 @@ def send(self, record, message, resource=_GLOBAL_RESOURCE):
272271
:param resource: Monitored resource of the entry, defaults
273272
to the global resource type.
274273
"""
275-
self.worker.enqueue(record, message, resource)
274+
self.worker.enqueue(record, message, resource=resource)
276275

277276
def flush(self):
278277
"""Submit any pending log records."""

logging/google/cloud/logging/handlers/transports/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Transport(object):
2222
client and name object, and must override :meth:`send`.
2323
"""
2424

25-
def send(self, record, message, resource):
25+
def send(self, record, message, resource=None):
2626
"""Transport send to be implemented by subclasses.
2727
2828
:type record: :class:`logging.LogRecord`

logging/google/cloud/logging/handlers/transports/sync.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
from google.cloud.logging.resource import Resource
2222

2323

24-
_GLOBAL_RESOURCE = Resource(type='global', labels={})
25-
26-
2724
class SyncTransport(Transport):
2825
"""Basic sychronous transport.
2926
@@ -33,7 +30,7 @@ class SyncTransport(Transport):
3330
def __init__(self, client, name):
3431
self.logger = client.logger(name)
3532

36-
def send(self, record, message, resource=_GLOBAL_RESOURCE):
33+
def send(self, record, message, resource=None):
3734
"""Overrides transport.send().
3835
3936
:type record: :class:`logging.LogRecord`

logging/tests/unit/handlers/test_app_engine.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
# limitations under the License.
1414

1515
import logging
16-
import os
1716
import unittest
18-
from google.cloud.logging.resource import Resource
1917

2018

2119
class TestAppEngineHandlerHandler(unittest.TestCase):
20+
2221
PROJECT = 'PROJECT'
2322

2423
def _get_target_class(self):
@@ -30,29 +29,32 @@ def _make_one(self, *args, **kw):
3029
return self._get_target_class()(*args, **kw)
3130

3231
def test_ctor(self):
32+
import os
33+
from google.cloud._testing import _Monkey
34+
from google.cloud.logging.handlers.app_engine import _GAE_PROJECT_ENV, _GAE_SERVICE_ENV, _GAE_VERSION_ENV
35+
3336
client = _Client(self.PROJECT)
34-
handler = self._make_one(client, transport=_Transport)
37+
with _Monkey(os, environ={_GAE_PROJECT_ENV: 'test_project',
38+
_GAE_SERVICE_ENV: 'test_service',
39+
_GAE_VERSION_ENV: 'test_version'}):
40+
handler = self._make_one(client, transport=_Transport)
3541
self.assertEqual(handler.client, client)
42+
self.assertEqual(handler.resource.type, 'gae_app')
43+
self.assertEqual(handler.resource.labels['project_id'], 'test_project')
44+
self.assertEqual(handler.resource.labels['module_id'], 'test_service')
45+
self.assertEqual(handler.resource.labels['version_id'], 'test_version')
3646

3747
def test_emit(self):
38-
RESOURCE = Resource(
39-
type='gae_app',
40-
labels={
41-
'project_id': os.getenv('GCLOUD_PROJECT'),
42-
'module_id': os.getenv('GAE_SERVICE'),
43-
'version_id': os.getenv('GAE_VERSION'),
44-
},
45-
)
46-
4748
client = _Client(self.PROJECT)
4849
handler = self._make_one(client, transport=_Transport)
50+
gae_resource = handler.get_gae_resource()
4951
logname = 'loggername'
5052
message = 'hello world'
5153
record = logging.LogRecord(logname, logging, None, None, message,
5254
None, None)
5355
handler.emit(record)
5456

55-
self.assertEqual(handler.transport.send_called_with, (record, message, RESOURCE))
57+
self.assertEqual(handler.transport.send_called_with, (record, message, gae_resource))
5658

5759

5860
class _Client(object):

logging/tests/unit/handlers/transports/test_background_thread.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import logging
1616
import unittest
17-
from google.cloud.logging.resource import Resource
1817

1918
import mock
2019
from six.moves import queue
@@ -48,12 +47,7 @@ def test_constructor(self):
4847
self.assertEqual(logger.name, name)
4948

5049
def test_send(self):
51-
RESOURCE = Resource(
52-
type='gae_app',
53-
labels={
54-
'module_id': 'default',
55-
'version_id': 'test',
56-
})
50+
from google.cloud.logging.logger import _GLOBAL_RESOURCE
5751

5852
client = _Client(self.PROJECT)
5953
name = 'python_logger'
@@ -67,9 +61,9 @@ def test_send(self):
6761
python_logger_name, logging.INFO,
6862
None, None, message, None, None)
6963

70-
transport.send(record, message, RESOURCE)
64+
transport.send(record, message, _GLOBAL_RESOURCE)
7165

72-
transport.worker.enqueue.assert_called_once_with(record, message, RESOURCE)
66+
transport.worker.enqueue.assert_called_once_with(record, message, _GLOBAL_RESOURCE)
7367

7468
def test_flush(self):
7569
client = _Client(self.PROJECT)

logging/tests/unit/handlers/transports/test_sync.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414

1515
import logging
1616
import unittest
17-
from google.cloud.logging.resource import Resource
18-
from google.cloud.logging.logger import _GLOBAL_RESOURCE
1917

2018

2119
class TestSyncHandler(unittest.TestCase):
@@ -38,12 +36,7 @@ def test_ctor(self):
3836
self.assertEqual(transport.logger.name, 'python_logger')
3937

4038
def test_send(self):
41-
RESOURCE = Resource(
42-
type='gae_app',
43-
labels={
44-
'module_id': 'default',
45-
'version_id': 'test',
46-
})
39+
from google.cloud.logging.logger import _GLOBAL_RESOURCE
4740

4841
client = _Client(self.PROJECT)
4942

@@ -54,17 +47,18 @@ def test_send(self):
5447
record = logging.LogRecord(python_logger_name, logging.INFO,
5548
None, None, message, None, None)
5649

57-
transport.send(record, message, RESOURCE)
50+
transport.send(record, message, _GLOBAL_RESOURCE)
5851
EXPECTED_STRUCT = {
5952
'message': message,
6053
'python_logger': python_logger_name,
6154
}
62-
EXPECTED_SENT = (EXPECTED_STRUCT, 'INFO', RESOURCE)
55+
EXPECTED_SENT = (EXPECTED_STRUCT, 'INFO', _GLOBAL_RESOURCE)
6356
self.assertEqual(
6457
transport.logger.log_struct_called_with, EXPECTED_SENT)
6558

6659

6760
class _Logger(object):
61+
from google.cloud.logging.logger import _GLOBAL_RESOURCE
6862

6963
def __init__(self, name):
7064
self.name = name

0 commit comments

Comments
 (0)