Coverage for /pythoncovmergedfiles/medio/medio/src/airflow/build/lib/airflow/utils/log/timezone_aware.py: 47%

17 statements  

« prev     ^ index     » next       coverage.py v7.0.1, created at 2022-12-25 06:11 +0000

1# Licensed to the Apache Software Foundation (ASF) under one 

2# or more contributor license agreements. See the NOTICE file 

3# distributed with this work for additional information 

4# regarding copyright ownership. The ASF licenses this file 

5# to you under the Apache License, Version 2.0 (the 

6# "License"); you may not use this file except in compliance 

7# with the License. You may obtain a copy of the License at 

8# 

9# http://www.apache.org/licenses/LICENSE-2.0 

10# 

11# Unless required by applicable law or agreed to in writing, 

12# software distributed under the License is distributed on an 

13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 

14# KIND, either express or implied. See the License for the 

15# specific language governing permissions and limitations 

16# under the License. 

17from __future__ import annotations 

18 

19import logging 

20 

21import pendulum 

22 

23 

24class TimezoneAware(logging.Formatter): 

25 """ 

26 Override `default_time_format`, `default_msec_format` and `formatTime` to specify utc offset. 

27 utc offset is the matter, without it, time conversion could be wrong. 

28 With this Formatter, `%(asctime)s` will be formatted containing utc offset. (ISO 8601) 

29 (e.g. 2022-06-12T13:00:00.123+0000) 

30 """ 

31 

32 default_time_format = "%Y-%m-%dT%H:%M:%S" 

33 default_msec_format = "%s.%03d" 

34 default_tz_format = "%z" 

35 

36 def formatTime(self, record, datefmt=None): 

37 """ 

38 Returns the creation time of the specified LogRecord in ISO 8601 date and time format 

39 in the local time zone. 

40 """ 

41 dt = pendulum.from_timestamp(record.created, tz=pendulum.local_timezone()) 

42 if datefmt: 

43 s = dt.strftime(datefmt) 

44 else: 

45 s = dt.strftime(self.default_time_format) 

46 

47 if self.default_msec_format: 

48 s = self.default_msec_format % (s, record.msecs) 

49 if self.default_tz_format: 

50 s += dt.strftime(self.default_tz_format) 

51 return s