Hello community,

here is the log from the commit of package python-oslo.log for openSUSE:Factory 
checked in at 2019-05-03 22:42:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.log (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.log.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.log"

Fri May  3 22:42:22 2019 rev:15 rq:692858 version:3.42.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.log/python-oslo.log.changes  
2019-01-24 14:15:21.499227731 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.log.new.5148/python-oslo.log.changes    
    2019-05-03 22:42:24.167238462 +0200
@@ -1,0 +2,27 @@
+Mon Apr  8 11:07:31 UTC 2019 - [email protected]
+
+- update to version 3.42.3
+  - Add Windows Event Log handler
+  - Imported Translations from Zanata
+  - Update mailinglist from dev to discuss
+  - Clarify some config options
+  - Use template for lower-constraints
+  - import zuul job settings from project-config
+  - Always build universal wheels
+  - Add config options for log rotation
+  - Update reno for stable/rocky
+  - add python 3.6 unit test job
+  - Fix handling of exc_info in OSJournalHandler
+  - Default oslo.policy logging to INFO
+  - Advancing the protocal of the website to HTTPS in usage.rst.
+  - add lib-forward-testing-python3 test job
+  - Filter args dict in JSONFormatter
+  - Add devstack job with JSONFormatter configured
+  - Fix lower-constraints job
+  - Follow the new PTI for document build
+  - Migrate to stestr
+  - rewrite tests to not rely on implementation details of logging module
+  - Fix up nits in log rotation change
+  - Clean up .gitignore references to personal tools
+
+-------------------------------------------------------------------

Old:
----
  oslo.log-3.39.2.tar.gz

New:
----
  oslo.log-3.42.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-oslo.log.spec ++++++
--- /var/tmp/diff_new_pack.JJlmBe/_old  2019-05-03 22:42:24.579239330 +0200
+++ /var/tmp/diff_new_pack.JJlmBe/_new  2019-05-03 22:42:24.583239338 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-oslo.log
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,58 +17,58 @@
 
 
 Name:           python-oslo.log
-Version:        3.39.2
+Version:        3.42.3
 Release:        0
 Summary:        OpenStack log library
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://launchpad.net/oslo.log
-Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.log/oslo.log-3.39.2.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.log/oslo.log-3.42.3.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python-devel
 BuildRequires:  python2-mock
-BuildRequires:  python2-monotonic >= 0.6
+BuildRequires:  python2-monotonic >= 1.4
 BuildRequires:  python2-oslo.config >= 5.2.0
-BuildRequires:  python2-oslo.context >= 2.19.2
-BuildRequires:  python2-oslo.i18n >= 3.15.3
-BuildRequires:  python2-oslo.serialization >= 2.18.0
-BuildRequires:  python2-oslo.utils >= 3.33.0
+BuildRequires:  python2-oslo.context >= 2.20.0
+BuildRequires:  python2-oslo.i18n >= 3.20.0
+BuildRequires:  python2-oslo.serialization >= 2.25.0
+BuildRequires:  python2-oslo.utils >= 3.36.0
 BuildRequires:  python2-oslotest
-BuildRequires:  python2-pbr >= 2.0.0
+BuildRequires:  python2-pbr >= 3.1.1
 BuildRequires:  python2-pyinotify >= 0.9.6
-BuildRequires:  python2-python-dateutil >= 2.5.3
+BuildRequires:  python2-python-dateutil >= 2.7.0
 BuildRequires:  python2-python-subunit
-BuildRequires:  python2-six >= 1.10.0
-BuildRequires:  python2-testrepository
+BuildRequires:  python2-six >= 1.11.0
+BuildRequires:  python2-stestr
 BuildRequires:  python2-testscenarios
 BuildRequires:  python2-testtools
 BuildRequires:  python3-devel
 BuildRequires:  python3-mock
-BuildRequires:  python3-monotonic >= 0.6
+BuildRequires:  python3-monotonic >= 1.4
 BuildRequires:  python3-oslo.config >= 5.2.0
-BuildRequires:  python3-oslo.context >= 2.19.2
-BuildRequires:  python3-oslo.i18n >= 3.15.3
-BuildRequires:  python3-oslo.serialization >= 2.18.0
-BuildRequires:  python3-oslo.utils >= 3.33.0
+BuildRequires:  python3-oslo.context >= 2.20.0
+BuildRequires:  python3-oslo.i18n >= 3.20.0
+BuildRequires:  python3-oslo.serialization >= 2.25.0
+BuildRequires:  python3-oslo.utils >= 3.36.0
 BuildRequires:  python3-oslotest
-BuildRequires:  python3-pbr >= 2.0.0
+BuildRequires:  python3-pbr >= 3.1.1
 BuildRequires:  python3-pyinotify >= 0.9.6
-BuildRequires:  python3-python-dateutil >= 2.5.3
+BuildRequires:  python3-python-dateutil >= 2.7.0
 BuildRequires:  python3-python-subunit
-BuildRequires:  python3-six >= 1.10.0
-BuildRequires:  python3-testrepository
+BuildRequires:  python3-six >= 1.11.0
+BuildRequires:  python3-stestr
 BuildRequires:  python3-testscenarios
 BuildRequires:  python3-testtools
-Requires:       python-debtcollector >= 1.2.0
-Requires:       python-monotonic >= 0.6
+Requires:       python-debtcollector >= 1.19.0
+Requires:       python-monotonic >= 1.4
 Requires:       python-oslo.config >= 5.2.0
-Requires:       python-oslo.context >= 2.19.2
-Requires:       python-oslo.i18n >= 3.15.3
-Requires:       python-oslo.serialization >= 2.18.0
-Requires:       python-oslo.utils >= 3.33.0
+Requires:       python-oslo.context >= 2.20.0
+Requires:       python-oslo.i18n >= 3.20.0
+Requires:       python-oslo.serialization >= 2.25.0
+Requires:       python-oslo.utils >= 3.36.0
 Requires:       python-pyinotify >= 0.9.6
-Requires:       python-python-dateutil >= 2.5.3
-Requires:       python-six >= 1.10.0
+Requires:       python-python-dateutil >= 2.7.0
+Requires:       python-six >= 1.11.0
 BuildArch:      noarch
 %if 0%{?suse_version}
 Requires(post): update-alternatives
@@ -95,15 +95,14 @@
 Documentation for the oslo.log library.
 
 %prep
-%autosetup -p1 -n oslo.log-3.39.2
+%autosetup -p1 -n oslo.log-3.42.3
 %py_req_cleanup
-sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg
 
 %build
 %{python_build}
 
 # generate html docs
-%{__python2} setup.py build_sphinx
+PYTHONPATH=. PBR_VERSION=3.42.3 sphinx-build -b html doc/source doc/build/html
 rm -rf doc/build/html/.{doctrees,buildinfo}
 
 %install
@@ -116,11 +115,6 @@
 %postun
 %python_uninstall_alternative convert-json
 
-%check
-%{python_expand rm -rf .testrepository
-$python setup.py testr
-}
-
 %files %{python_files}
 %license LICENSE
 %doc ChangeLog README.rst

++++++ _service ++++++
--- /var/tmp/diff_new_pack.JJlmBe/_old  2019-05-03 22:42:24.603239380 +0200
+++ /var/tmp/diff_new_pack.JJlmBe/_new  2019-05-03 22:42:24.603239380 +0200
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/rocky/openstack/oslo.log/oslo.log.spec.j2</param>
+    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/stein/openstack/oslo.log/oslo.log.spec.j2</param>
     <param name="output-name">python-oslo.log.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/oslo.log/stable/rocky/requirements.txt</param>
+    <param 
name="requirements">https://raw.githubusercontent.com/openstack/oslo.log/stable/stein/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,oslo.log</param>
   </service>

++++++ oslo.log-3.39.2.tar.gz -> oslo.log-3.42.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/.stestr.conf 
new/oslo.log-3.42.3/.stestr.conf
--- old/oslo.log-3.39.2/.stestr.conf    1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-3.42.3/.stestr.conf    2019-02-26 01:06:43.000000000 +0100
@@ -0,0 +1,3 @@
+[DEFAULT]
+test_path=./oslo_log/tests/unit
+top_dir=./
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/.testr.conf 
new/oslo.log-3.42.3/.testr.conf
--- old/oslo.log-3.39.2/.testr.conf     2018-09-25 21:44:42.000000000 +0200
+++ new/oslo.log-3.42.3/.testr.conf     1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
-[DEFAULT]
-test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
-             OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
-             OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
-             ${PYTHON:-python} -m subunit.run discover -t ./ ./oslo_log 
$LISTOPT $IDOPTION
-test_id_option=--load-list $IDFILE
-test_list_option=--list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/.zuul.yaml 
new/oslo.log-3.42.3/.zuul.yaml
--- old/oslo.log-3.39.2/.zuul.yaml      2018-09-25 21:44:42.000000000 +0200
+++ new/oslo.log-3.42.3/.zuul.yaml      2019-02-26 01:06:43.000000000 +0100
@@ -13,20 +13,51 @@
     run: playbooks/legacy/oslo.log-src-grenade-devstack/run.yaml
     timeout: 10800
 
+- job:
+    name: oslo.log-jsonformatter
+    parent: devstack-tempest
+    timeout: 10800
+    vars:
+      devstack_local_conf:
+        post-config:
+          $NOVA_CONF:
+            DEFAULT:
+              use_json: True
+          $NEUTRON_CONF:
+            DEFAULT:
+              use_json: True
+          $GLANCE_CONF:
+            DEFAULT:
+              use_json: True
+          $CINDER_CONF:
+            DEFAULT:
+              use_json: True
+          $KEYSTONE_CONF:
+            DEFAULT:
+              use_json: True
+    irrelevant-files:
+      - ^.*\.rst$
+      - ^api-ref/.*$
+      - ^doc/.*$
+      - ^releasenotes/.*$
+
+
 - project:
     check:
       jobs:
         - oslo.log-src-grenade-devstack
-
-        - openstack-tox-lower-constraints
+        - oslo.log-jsonformatter
     gate:
       jobs:
-        - openstack-tox-lower-constraints
+        - oslo.log-jsonformatter
     templates:
+      - check-requirements
+      - lib-forward-testing
+      - lib-forward-testing-python3
+      - openstack-lower-constraints-jobs
       - openstack-python-jobs
       - openstack-python35-jobs
+      - openstack-python36-jobs
+      - periodic-stable-jobs
       - publish-openstack-docs-pti
-      - check-requirements
-      - lib-forward-testing
       - release-notes-jobs-python3
-      - periodic-stable-jobs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/AUTHORS new/oslo.log-3.42.3/AUTHORS
--- old/oslo.log-3.39.2/AUTHORS 2018-09-25 21:47:35.000000000 +0200
+++ new/oslo.log-3.42.3/AUTHORS 2019-02-26 01:09:15.000000000 +0100
@@ -29,6 +29,7 @@
 Cyril Roelandt <[email protected]>
 Daisuke Fujita <[email protected]>
 Dan Prince <[email protected]>
+Daniel Vincze <[email protected]>
 Davanum Srinivas <[email protected]>
 Davanum Srinivas <[email protected]>
 David Stanek <[email protected]>
@@ -53,6 +54,7 @@
 Gage Hugo <[email protected]>
 Gary Kotton <[email protected]>
 Gorka Eguileor <[email protected]>
+Hervé Beraud <[email protected]>
 Ian Cordasco <[email protected]>
 Ihar Hrachyshka <[email protected]>
 James Carey <[email protected]>
@@ -92,6 +94,7 @@
 Masaki Matsushita <[email protected]>
 Mate Lakat <[email protected]>
 Matt Odden <[email protected]>
+Matt Riedemann <[email protected]>
 Michael Basnight <[email protected]>
 Michael Kerrin <[email protected]>
 Michael Still <[email protected]>
@@ -102,7 +105,9 @@
 Morgan Fainberg <[email protected]>
 Nam Nguyen Hoai <[email protected]>
 Nataliia Uvarova <[email protected]>
+Nikita Gerasimov <[email protected]>
 OpenStack Release Bot <[email protected]>
+Pavlo Shchelokovskyy <[email protected]>
 Pádraig Brady <[email protected]>
 Radomir Dopieralski <[email protected]>
 Rajesh Tailor <[email protected]>
@@ -140,7 +145,6 @@
 Zhiteng Huang <[email protected]>
 ZhongShengping <[email protected]>
 Zhongyue Luo <[email protected]>
-Zuul <[email protected]>
 abhishekkekane <[email protected]>
 avnish <[email protected]>
 eeldill <[email protected]>
@@ -160,3 +164,4 @@
 wangqi <[email protected]>
 yan.haifeng <[email protected]>
 zhang-jinnan <[email protected]>
+zhouxinyong <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/ChangeLog 
new/oslo.log-3.42.3/ChangeLog
--- old/oslo.log-3.39.2/ChangeLog       2018-09-25 21:47:34.000000000 +0200
+++ new/oslo.log-3.42.3/ChangeLog       2019-02-26 01:09:15.000000000 +0100
@@ -1,13 +1,51 @@
 CHANGES
 =======
 
-3.39.2
+3.42.3
+------
+
+* Clarify some config options
+
+3.42.2
+------
+
+* Use template for lower-constraints
+
+3.42.1
+------
+
+* Default oslo.policy logging to INFO
+* Update mailinglist from dev to discuss
+* Fix handling of exc\_info in OSJournalHandler
+* Fix up nits in log rotation change
+
+3.42.0
+------
+
+* Add config options for log rotation
+* Advancing the protocal of the website to HTTPS in usage.rst
+
+3.41.0
+------
+
+* Add Windows Event Log handler
+* Clean up .gitignore references to personal tools
+* Always build universal wheels
+* Add devstack job with JSONFormatter configured
+
+3.40.1
 ------
 
 * Filter args dict in JSONFormatter
+* add lib-forward-testing-python3 test job
+* add python 3.6 unit test job
+* rewrite tests to not rely on implementation details of logging module
 * import zuul job settings from project-config
-* Update UPPER\_CONSTRAINTS\_FILE for stable/rocky
-* Update .gitreview for stable/rocky
+* Follow the new PTI for document build
+* Migrate to stestr
+* Fix lower-constraints job
+* Imported Translations from Zanata
+* Update reno for stable/rocky
 
 3.39.0
 ------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/PKG-INFO new/oslo.log-3.42.3/PKG-INFO
--- old/oslo.log-3.39.2/PKG-INFO        2018-09-25 21:47:36.000000000 +0200
+++ new/oslo.log-3.42.3/PKG-INFO        2019-02-26 01:09:16.000000000 +0100
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: oslo.log
-Version: 3.39.2
+Version: 3.42.3
 Summary: oslo.log library
 Home-page: https://docs.openstack.org/oslo.log/latest
 Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
 License: UNKNOWN
 Description: ========================
         Team and repository tags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/RELEASENOTES.rst 
new/oslo.log-3.42.3/RELEASENOTES.rst
--- old/oslo.log-3.39.2/RELEASENOTES.rst        2018-09-25 21:47:36.000000000 
+0200
+++ new/oslo.log-3.42.3/RELEASENOTES.rst        1970-01-01 01:00:00.000000000 
+0100
@@ -1,3 +0,0 @@
-========
-oslo.log
-========
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/requirements.txt 
new/oslo.log-3.42.3/doc/requirements.txt
--- old/oslo.log-3.39.2/doc/requirements.txt    1970-01-01 01:00:00.000000000 
+0100
+++ new/oslo.log-3.42.3/doc/requirements.txt    2019-02-26 01:06:43.000000000 
+0100
@@ -0,0 +1,7 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+
+sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
+reno>=2.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/admin/index.rst 
new/oslo.log-3.42.3/doc/source/admin/index.rst
--- old/oslo.log-3.39.2/doc/source/admin/index.rst      2018-09-25 
21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/doc/source/admin/index.rst      2019-02-26 
01:06:43.000000000 +0100
@@ -7,3 +7,4 @@
 
    advanced_config
    journal
+   log_rotation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/admin/journal.rst 
new/oslo.log-3.42.3/doc/source/admin/journal.rst
--- old/oslo.log-3.39.2/doc/source/admin/journal.rst    2018-09-25 
21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/doc/source/admin/journal.rst    2019-02-26 
01:06:43.000000000 +0100
@@ -155,4 +155,4 @@
 
 - The guide for using systemd in devstack provides additional examples
   of effective journalctl queries -
-  http://git.openstack.org/cgit/openstack-dev/devstack/tree/SYSTEMD.rst
+  https://git.openstack.org/cgit/openstack-dev/devstack/tree/SYSTEMD.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/admin/log_rotation.rst 
new/oslo.log-3.42.3/doc/source/admin/log_rotation.rst
--- old/oslo.log-3.39.2/doc/source/admin/log_rotation.rst       1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.log-3.42.3/doc/source/admin/log_rotation.rst       2019-02-26 
01:06:43.000000000 +0100
@@ -0,0 +1,45 @@
+=============
+ Log rotation
+=============
+
+oslo.log can work with ``logrotate``, picking up file changes once log files
+are rotated. Make sure to set the ``watch-log-file`` config option.
+
+Log rotation on Windows
+-----------------------
+
+On Windows, in-use files cannot be renamed or moved. For this reason,
+oslo.log allows setting maximum log file sizes or log rotation interval,
+in which case the service itself will take care of the log rotation (as
+opposed to having an external daemon).
+
+Configuring log rotation
+------------------------
+
+Use the following options to set a maximum log file size. In this sample,
+log files will be rotated when reaching 1GB, having at most 30 log files.
+
+.. code-block:: ini
+
+    [DEFAULT]
+    log_rotation_type = size
+    max_logfile_size_mb = 1024  # MB
+    max_logfile_count = 30
+
+The following sample configures log rotation to be performed every 12 hours.
+
+.. code-block:: ini
+
+    [DEFAULT]
+    log_rotation_type = interval
+    log_rotate_interval = 12
+    log_rotate_interval_type = Hours
+    max_logfile_count = 60
+
+.. note::
+
+    The time of the next rotation is computed when the service starts or when a
+    log rotation is performed, using the time of the last file modification or
+    the service start time, to which the configured log rotation interval is
+    added. This means that service restarts may delay periodic log file
+    rotations.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/user/examples.rst 
new/oslo.log-3.42.3/doc/source/user/examples.rst
--- old/oslo.log-3.39.2/doc/source/user/examples.rst    2018-09-25 
21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/doc/source/user/examples.rst    2019-02-26 
01:06:43.000000000 +0100
@@ -8,7 +8,7 @@
 the git source of this project.  They can also be found in the
 `online git repository`_ of this project.
 
-.. _online git repository: 
http://git.openstack.org/cgit/openstack/oslo.log/tree/doc/source/examples
+.. _online git repository: 
https://git.openstack.org/cgit/openstack/oslo.log/tree/doc/source/examples
 
 
 python_logging.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/user/migration.rst 
new/oslo.log-3.42.3/doc/source/user/migration.rst
--- old/oslo.log-3.39.2/doc/source/user/migration.rst   2018-09-25 
21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/doc/source/user/migration.rst   2019-02-26 
01:06:43.000000000 +0100
@@ -23,7 +23,7 @@
 level anyway, so those calls should be replaced with calls to
 ``info()``.
 
-.. _cross project spec: 
http://git.openstack.org/cgit/openstack/openstack-specs/tree/specs/log-guidelines.rst
+.. _cross project spec: 
https://git.openstack.org/cgit/openstack/openstack-specs/tree/specs/log-guidelines.rst
 
 Deprecation tools moved to ``versionutils``
 -------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/doc/source/user/usage.rst 
new/oslo.log-3.42.3/doc/source/user/usage.rst
--- old/oslo.log-3.39.2/doc/source/user/usage.rst       2018-09-25 
21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/doc/source/user/usage.rst       2019-02-26 
01:06:43.000000000 +0100
@@ -88,7 +88,7 @@
 Logging within an application should use `Oslo International Utilities 
(i18n)`_ marker
 functions to provide language translation capabilities.
 
-.. _Oslo International Utilities (i18n): 
http://docs.openstack.org/oslo.i18n/latest
+.. _Oslo International Utilities (i18n): 
https://docs.openstack.org/oslo.i18n/latest
 
 .. literalinclude:: examples/usage_i18n.py
    :linenos:
@@ -100,7 +100,7 @@
 With the use of `Oslo Context`_, log records can also contain
 additional contextual information applicable for your application.
 
-.. _Oslo Context: http://docs.openstack.org/oslo.context/latest
+.. _Oslo Context: https://docs.openstack.org/oslo.context/latest
 
 .. literalinclude:: examples/usage_context.py
    :linenos:
@@ -152,7 +152,7 @@
 explain how to use different logging levels, and the desired logging
 patterns to be used in OpenStack applications.
 
-.. _OpenStack Logging Guidelines: 
http://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html
+.. _OpenStack Logging Guidelines: 
https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html
 
 In a Library
 ============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/lower-constraints.txt 
new/oslo.log-3.42.3/lower-constraints.txt
--- old/oslo.log-3.39.2/lower-constraints.txt   2018-09-25 21:44:42.000000000 
+0200
+++ new/oslo.log-3.42.3/lower-constraints.txt   2019-02-26 01:06:43.000000000 
+0100
@@ -59,7 +59,9 @@
 snowballstemmer==1.2.1
 Sphinx==1.6.5
 sphinxcontrib-websupport==1.0.1
+stestr==2.0.0
 stevedore==1.28.0
+systemd-python==234
 testrepository==0.0.20
 testtools==2.3.0
 traceback2==1.4.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo.log.egg-info/PKG-INFO 
new/oslo.log-3.42.3/oslo.log.egg-info/PKG-INFO
--- old/oslo.log-3.39.2/oslo.log.egg-info/PKG-INFO      2018-09-25 
21:47:35.000000000 +0200
+++ new/oslo.log-3.42.3/oslo.log.egg-info/PKG-INFO      2019-02-26 
01:09:15.000000000 +0100
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: oslo.log
-Version: 3.39.2
+Version: 3.42.3
 Summary: oslo.log library
 Home-page: https://docs.openstack.org/oslo.log/latest
 Author: OpenStack
-Author-email: [email protected]
+Author-email: [email protected]
 License: UNKNOWN
 Description: ========================
         Team and repository tags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo.log.egg-info/SOURCES.txt 
new/oslo.log-3.42.3/oslo.log.egg-info/SOURCES.txt
--- old/oslo.log-3.39.2/oslo.log.egg-info/SOURCES.txt   2018-09-25 
21:47:35.000000000 +0200
+++ new/oslo.log-3.42.3/oslo.log.egg-info/SOURCES.txt   2019-02-26 
01:09:16.000000000 +0100
@@ -1,6 +1,6 @@
 .coveragerc
 .mailmap
-.testr.conf
+.stestr.conf
 .zuul.yaml
 AUTHORS
 CONTRIBUTING.rst
@@ -15,12 +15,14 @@
 setup.py
 test-requirements.txt
 tox.ini
+doc/requirements.txt
 doc/source/conf.py
 doc/source/index.rst
 doc/source/admin/advanced_config.rst
 doc/source/admin/example_nova.rst
 doc/source/admin/index.rst
 doc/source/admin/journal.rst
+doc/source/admin/log_rotation.rst
 doc/source/admin/nova_sample.conf
 doc/source/configuration/index.rst
 doc/source/contributor/index.rst
@@ -94,6 +96,7 @@
 releasenotes/notes/info-logging-7b7be9fc7a95aebc.yaml
 releasenotes/notes/is_debug_enabled-d7afee4c811a46df.yaml
 releasenotes/notes/jsonformatter-repr-fd616eb6fa6caeb3.yaml
+releasenotes/notes/log-rotation-595f8232cd987a6d.yaml
 releasenotes/notes/reload_log_config-743817192b1172b6.yaml
 releasenotes/notes/remove-log-format-b4b949701cee3315.yaml
 releasenotes/notes/remove-syslog-rfc-format-7a06772c0bb48e9b.yaml
@@ -101,6 +104,7 @@
 releasenotes/notes/systemd-journal-support-fcbc34b3c5ce93ec.yaml
 releasenotes/notes/use-json-option-96f71da54a3b9a18.yaml
 releasenotes/notes/use_stderr_default_false-50d846b88cf2be90.yaml
+releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml
 releasenotes/source/conf.py
 releasenotes/source/index.rst
 releasenotes/source/liberty.rst
@@ -109,6 +113,7 @@
 releasenotes/source/ocata.rst
 releasenotes/source/pike.rst
 releasenotes/source/queens.rst
+releasenotes/source/rocky.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo.log.egg-info/pbr.json 
new/oslo.log-3.42.3/oslo.log.egg-info/pbr.json
--- old/oslo.log-3.39.2/oslo.log.egg-info/pbr.json      2018-09-25 
21:47:35.000000000 +0200
+++ new/oslo.log-3.42.3/oslo.log.egg-info/pbr.json      2019-02-26 
01:09:15.000000000 +0100
@@ -1 +1 @@
-{"git_version": "871d2df", "is_release": true}
\ No newline at end of file
+{"git_version": "7c5f836", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo.log.egg-info/requires.txt 
new/oslo.log-3.42.3/oslo.log.egg-info/requires.txt
--- old/oslo.log-3.39.2/oslo.log.egg-info/requires.txt  2018-09-25 
21:47:35.000000000 +0200
+++ new/oslo.log-3.42.3/oslo.log.egg-info/requires.txt  2019-02-26 
01:09:15.000000000 +0100
@@ -1,14 +1,16 @@
-pbr!=2.1.0,>=2.0.0
-six>=1.10.0
+pbr>=3.1.1
+six>=1.11.0
 oslo.config>=5.2.0
-oslo.context>=2.19.2
-oslo.i18n>=3.15.3
-oslo.utils>=3.33.0
-oslo.serialization!=2.19.1,>=2.18.0
-debtcollector>=1.2.0
+oslo.context>=2.20.0
+oslo.i18n>=3.20.0
+oslo.utils>=3.36.0
+oslo.serialization>=2.25.0
+debtcollector>=1.19.0
+python-dateutil>=2.7.0
+monotonic>=1.4
+
+[:(sys_platform!='win32' and sys_platform!='darwin' and 
sys_platform!='sunos5')]
 pyinotify>=0.9.6
-python-dateutil>=2.5.3
-monotonic>=0.6
 
 [fixtures]
 fixtures>=3.0.0
@@ -18,12 +20,9 @@
 
 [test]
 hacking!=0.13.0,<0.14,>=0.12.0
-testrepository>=0.0.18
-testtools>=2.2.0
+stestr>=2.0.0
+testtools>=2.3.0
 mock>=2.0.0
-oslotest>=3.2.0
-coverage!=4.4,>=4.0
-sphinx!=1.6.6,!=1.6.7,>=1.6.2
-openstackdocstheme>=1.18.1
-reno>=2.5.0
+oslotest>=3.3.0
+coverage>=4.5.1
 bandit>=1.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo_log/_options.py 
new/oslo.log-3.42.3/oslo_log/_options.py
--- old/oslo.log-3.39.2/oslo_log/_options.py    2018-09-25 21:44:30.000000000 
+0200
+++ new/oslo.log-3.42.3/oslo_log/_options.py    2019-02-26 01:06:43.000000000 
+0100
@@ -27,6 +27,7 @@
                       'keystonemiddleware=WARN', 'routes.middleware=WARN',
                       'stevedore=WARN', 'taskflow=WARN',
                       'keystoneauth=WARN', 'oslo.cache=INFO',
+                      'oslo_policy=INFO',
                       'dogpile.core.dogpile=INFO']
 
 _IGNORE_MESSAGE = "This option is ignored if log_config_append is set."
@@ -52,7 +53,7 @@
                     'when logging configuration files are used then all '
                     'logging configuration is set in the configuration file '
                     'and other logging configuration options are ignored '
-                    '(for example, logging_context_format_string).'),
+                    '(for example, log-date-format).'),
     cfg.StrOpt('log-date-format',
                default=_DEFAULT_LOG_DATE_FORMAT,
                metavar='DATE_FORMAT',
@@ -108,6 +109,38 @@
                 default=False,
                 help='Log output to standard error. '
                      + _IGNORE_MESSAGE),
+    cfg.BoolOpt('use_eventlog',
+                default=False,
+                help='Log output to Windows Event Log.'),
+    cfg.IntOpt('log_rotate_interval',
+               default=1,
+               help='The amount of time before the log files are rotated. '
+                    'This option is ignored unless log_rotation_type is set'
+                    'to "interval".'),
+    cfg.StrOpt('log_rotate_interval_type',
+               choices=['Seconds', 'Minutes', 'Hours', 'Days', 'Weekday',
+                        'Midnight'],
+               ignore_case=True,
+               default='days',
+               help='Rotation interval type. The time of the last file '
+                    'change (or the time when the service was started) is '
+                    'used when scheduling the next rotation.'),
+    cfg.IntOpt('max_logfile_count',
+               default=30,
+               help='Maximum number of rotated log files.'),
+    cfg.IntOpt('max_logfile_size_mb',
+               default=200,
+               help='Log file maximum size in MB. This option is ignored if '
+                    '"log_rotation_type" is not set to "size".'),
+    cfg.StrOpt('log_rotation_type',
+               default='none',
+               choices=[('interval',
+                         'Rotate logs at predefined time intervals.'),
+                        ('size',
+                         'Rotate logs once they reach a predefined size.'),
+                        ('none', 'Do not rotate log files.')],
+               ignore_case=True,
+               help='Log rotation type.')
 ]
 
 log_opts = [
@@ -115,25 +148,30 @@
                default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
                        '%(name)s [%(request_id)s %(user_identity)s] '
                        '%(instance)s%(message)s',
-               help='Format string to use for log messages with context.'),
+               help='Format string to use for log messages with context. '
+                    'Used by oslo_log.formatters.ContextFormatter'),
     cfg.StrOpt('logging_default_format_string',
                default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
                        '%(name)s [-] %(instance)s%(message)s',
                help='Format string to use for log messages when context is '
-                    'undefined.'),
+                    'undefined. '
+                    'Used by oslo_log.formatters.ContextFormatter'),
     cfg.StrOpt('logging_debug_format_suffix',
                default='%(funcName)s %(pathname)s:%(lineno)d',
                help='Additional data to append to log message when logging '
-                    'level for the message is DEBUG.'),
+                    'level for the message is DEBUG. '
+                    'Used by oslo_log.formatters.ContextFormatter'),
     cfg.StrOpt('logging_exception_prefix',
                default='%(asctime)s.%(msecs)03d %(process)d ERROR %(name)s '
                '%(instance)s',
-               help='Prefix each line of exception output with this format.'),
+               help='Prefix each line of exception output with this format. '
+                    'Used by oslo_log.formatters.ContextFormatter'),
     cfg.StrOpt('logging_user_identity_format',
                default='%(user)s %(tenant)s '
                        '%(domain)s %(user_domain)s %(project_domain)s',
                help='Defines the format string for %(user_identity)s that '
-                    'is used in logging_context_format_string.'),
+                    'is used in logging_context_format_string. '
+                    'Used by oslo_log.formatters.ContextFormatter'),
     cfg.ListOpt('default_log_levels',
                 default=DEFAULT_LOG_LEVELS,
                 help='List of package logging levels in logger=LEVEL pairs. '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo_log/handlers.py 
new/oslo.log-3.42.3/oslo_log/handlers.py
--- old/oslo.log-3.39.2/oslo_log/handlers.py    2018-09-25 21:44:30.000000000 
+0200
+++ new/oslo.log-3.42.3/oslo_log/handlers.py    2019-02-26 01:06:43.000000000 
+0100
@@ -131,12 +131,17 @@
             'PRIORITY': priority
         }
 
+        if record.exc_info:
+            # Cache the traceback text to avoid converting it multiple times
+            # (it's constant anyway)
+            if not record.exc_text:
+                record.exc_text = self.formatter.formatException(
+                    record.exc_info)
         if record.exc_text:
+            extras['EXCEPTION_INFO'] = record.exc_text
+            # Leave EXCEPTION_TEXT for backward compatibility
             extras['EXCEPTION_TEXT'] = record.exc_text
 
-        if record.exc_info:
-            extras['EXCEPTION_INFO'] = record.exc_info
-
         for field in self.custom_fields:
             value = record.__dict__.get(field)
             if value:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo_log/log.py 
new/oslo.log-3.42.3/oslo_log/log.py
--- old/oslo.log-3.39.2/oslo_log/log.py 2018-09-25 21:44:30.000000000 +0200
+++ new/oslo.log-3.42.3/oslo_log/log.py 2019-02-26 01:06:43.000000000 +0100
@@ -40,6 +40,7 @@
 
 from oslo_config import cfg
 from oslo_utils import importutils
+from oslo_utils import units
 import six
 from six import moves
 
@@ -60,6 +61,15 @@
 
 logging.addLevelName(TRACE, 'TRACE')
 
+LOG_ROTATE_INTERVAL_MAPPING = {
+    'seconds': 's',
+    'minutes': 'm',
+    'hours': 'h',
+    'days': 'd',
+    'weekday': 'w',
+    'midnight': 'midnight'
+}
+
 
 def _get_log_file_path(conf, binary=None):
     logfile = conf.log_file
@@ -344,13 +354,33 @@
 
     logpath = _get_log_file_path(conf)
     if logpath:
+        # On Windows, in-use files cannot be moved or deleted.
         if conf.watch_log_file and platform.system() == 'Linux':
             from oslo_log import watchers
             file_handler = watchers.FastWatchedFileHandler
+            filelog = file_handler(logpath)
+        elif conf.log_rotation_type.lower() == "interval":
+            file_handler = logging.handlers.TimedRotatingFileHandler
+            when = conf.log_rotate_interval_type.lower()
+            interval_type = LOG_ROTATE_INTERVAL_MAPPING[when]
+            # When weekday is configured, "when" has to be a value between
+            # 'w0'-'w6' (w0 for Monday, w1 for Tuesday, and so on)'
+            if interval_type == 'w':
+                interval_type = interval_type + str(conf.log_rotate_interval)
+            filelog = file_handler(logpath,
+                                   when=interval_type,
+                                   interval=conf.log_rotate_interval,
+                                   backupCount=conf.max_logfile_count)
+        elif conf.log_rotation_type.lower() == "size":
+            file_handler = logging.handlers.RotatingFileHandler
+            maxBytes = conf.max_logfile_size_mb * units.Mi
+            filelog = file_handler(logpath,
+                                   maxBytes=maxBytes,
+                                   backupCount=conf.max_logfile_count)
         else:
             file_handler = logging.handlers.WatchedFileHandler
+            filelog = file_handler(logpath)
 
-        filelog = file_handler(logpath)
         log_root.addHandler(filelog)
 
     if conf.use_stderr:
@@ -361,6 +391,14 @@
         journal = handlers.OSJournalHandler()
         log_root.addHandler(journal)
 
+    if conf.use_eventlog:
+        if platform.system() == 'Windows':
+            eventlog = logging.handlers.NTEventLogHandler(project)
+            log_root.addHandler(eventlog)
+        else:
+            raise RuntimeError(_("Windows Event Log is not available on this "
+                                 "platform."))
+
     # if None of the above are True, then fall back to standard out
     if not logpath and not conf.use_stderr and not conf.use_journal:
         # pass sys.stdout as a positional argument
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/oslo_log/tests/unit/test_log.py 
new/oslo.log-3.42.3/oslo_log/tests/unit/test_log.py
--- old/oslo.log-3.39.2/oslo_log/tests/unit/test_log.py 2018-09-25 
21:44:42.000000000 +0200
+++ new/oslo.log-3.42.3/oslo_log/tests/unit/test_log.py 2019-02-26 
01:06:43.000000000 +0100
@@ -47,6 +47,7 @@
 from oslo_log import formatters
 from oslo_log import handlers
 from oslo_log import log
+from oslo_utils import units
 
 
 MIN_LOG_INI = b"""[loggers]
@@ -107,6 +108,7 @@
                                                   '%(message)s')
         self.log = None
         log._setup_logging_from_conf(self.config_fixture.conf, 'test', 'test')
+        self.log_handlers = log.getLogger(None).logger.handlers
 
     def test_handlers_have_context_formatter(self):
         formatters_list = []
@@ -140,6 +142,77 @@
                      'info', 'debug', 'log'):
             self.assertRaises(AttributeError, getattr, log, func)
 
+    @mock.patch('platform.system', return_value='Linux')
+    def test_eventlog_missing(self, platform_mock):
+        self.config(use_eventlog=True)
+        self.assertRaises(RuntimeError,
+                          log._setup_logging_from_conf,
+                          self.CONF,
+                          'test',
+                          'test')
+
+    @mock.patch('platform.system', return_value='Windows')
+    @mock.patch('logging.handlers.NTEventLogHandler')
+    @mock.patch('oslo_log.log.getLogger')
+    def test_eventlog(self, loggers_mock, handler_mock, platform_mock):
+        self.config(use_eventlog=True)
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        handler_mock.assert_called_once_with('test')
+        mock_logger = loggers_mock.return_value.logger
+        mock_logger.addHandler.assert_any_call(handler_mock.return_value)
+
+    @mock.patch('oslo_log.watchers.FastWatchedFileHandler')
+    @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
+    @mock.patch('platform.system', return_value='Linux')
+    def test_watchlog_on_linux(self, platfotm_mock, path_mock, handler_mock):
+        self.config(watch_log_file=True)
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        handler_mock.assert_called_once_with(path_mock.return_value)
+        self.assertEqual(self.log_handlers[0], handler_mock.return_value)
+
+    @mock.patch('logging.handlers.WatchedFileHandler')
+    @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
+    @mock.patch('platform.system', return_value='Windows')
+    def test_watchlog_on_windows(self, platform_mock, path_mock, handler_mock):
+        self.config(watch_log_file=True)
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        handler_mock.assert_called_once_with(path_mock.return_value)
+        self.assertEqual(self.log_handlers[0], handler_mock.return_value)
+
+    @mock.patch('logging.handlers.TimedRotatingFileHandler')
+    @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
+    def test_timed_rotate_log(self, path_mock, handler_mock):
+        rotation_type = 'interval'
+        when = 'weekday'
+        interval = 2
+        backup_count = 2
+        self.config(log_rotation_type=rotation_type,
+                    log_rotate_interval=interval,
+                    log_rotate_interval_type=when,
+                    max_logfile_count=backup_count)
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        handler_mock.assert_called_once_with(path_mock.return_value,
+                                             when='w2',
+                                             interval=interval,
+                                             backupCount=backup_count)
+        self.assertEqual(self.log_handlers[0], handler_mock.return_value)
+
+    @mock.patch('logging.handlers.RotatingFileHandler')
+    @mock.patch('oslo_log.log._get_log_file_path', return_value='test.conf')
+    def test_rotate_log(self, path_mock, handler_mock):
+        rotation_type = 'size'
+        max_logfile_size_mb = 100
+        maxBytes = max_logfile_size_mb * units.Mi
+        backup_count = 2
+        self.config(log_rotation_type=rotation_type,
+                    max_logfile_size_mb=max_logfile_size_mb,
+                    max_logfile_count=backup_count)
+        log._setup_logging_from_conf(self.CONF, 'test', 'test')
+        handler_mock.assert_called_once_with(path_mock.return_value,
+                                             maxBytes=maxBytes,
+                                             backupCount=backup_count)
+        self.assertEqual(self.log_handlers[0], handler_mock.return_value)
+
 
 class LoggerTestCase(CommonLoggerTestsMixIn, test_base.BaseTestCase):
     def setUp(self):
@@ -327,7 +400,6 @@
         local_context = _fake_new_context()
         l.info("Foo", context=local_context)
         self.assertEqual(
-            self.journal.send.call_args,
             mock.call(mock.ANY, CODE_FILE=mock.ANY, CODE_FUNC='test_emit',
                       CODE_LINE=mock.ANY, LOGGER_LEVEL='INFO',
                       LOGGER_NAME='nova-test.foo', PRIORITY=6,
@@ -336,7 +408,17 @@
                       PROJECT_NAME='mytenant',
                       PROCESS_NAME='MainProcess',
                       THREAD_NAME='MainThread',
-                      USER_NAME='myuser'))
+                      USER_NAME='myuser'),
+            self.journal.send.call_args)
+        args, kwargs = self.journal.send.call_args
+        self.assertEqual(len(args), 1)
+        self.assertIsInstance(args[0], six.string_types)
+        self.assertIsInstance(kwargs['CODE_LINE'], int)
+        self.assertIsInstance(kwargs['PRIORITY'], int)
+        del kwargs['CODE_LINE'], kwargs['PRIORITY']
+        for key, arg in kwargs.items():
+            self.assertIsInstance(key, six.string_types)
+            self.assertIsInstance(arg, six.string_types + (six.binary_type,))
 
     def test_emit_exception(self):
         l = log.getLogger('nova-exception.foo')
@@ -346,7 +428,6 @@
         except Exception:
             l.exception("Foo", context=local_context)
         self.assertEqual(
-            self.journal.send.call_args,
             mock.call(mock.ANY, CODE_FILE=mock.ANY,
                       CODE_FUNC='test_emit_exception',
                       CODE_LINE=mock.ANY, LOGGER_LEVEL='ERROR',
@@ -358,7 +439,17 @@
                       PROJECT_NAME='mytenant',
                       PROCESS_NAME='MainProcess',
                       THREAD_NAME='MainThread',
-                      USER_NAME='myuser'))
+                      USER_NAME='myuser'),
+            self.journal.send.call_args)
+        args, kwargs = self.journal.send.call_args
+        self.assertEqual(len(args), 1)
+        self.assertIsInstance(args[0], six.string_types)
+        self.assertIsInstance(kwargs['CODE_LINE'], int)
+        self.assertIsInstance(kwargs['PRIORITY'], int)
+        del kwargs['CODE_LINE'], kwargs['PRIORITY']
+        for key, arg in kwargs.items():
+            self.assertIsInstance(key, six.string_types)
+            self.assertIsInstance(arg, six.string_types + (six.binary_type,))
 
 
 class LogLevelTestCase(BaseTestCase):
@@ -1718,6 +1809,20 @@
                                            disable_existing_loggers=False)
 
 
+class SavingAdapter(log.KeywordArgumentAdapter):
+
+    def __init__(self, *args, **kwds):
+        super(log.KeywordArgumentAdapter, self).__init__(*args, **kwds)
+        self.results = []
+
+    def process(self, msg, kwargs):
+        # Run the real adapter and save the inputs and outputs
+        # before returning them so the test can examine both.
+        results = super(SavingAdapter, self).process(msg, kwargs)
+        self.results.append((msg, kwargs, results))
+        return results
+
+
 class KeywordArgumentAdapterTestCase(BaseTestCase):
 
     def setUp(self):
@@ -1770,52 +1875,44 @@
             kwargs)
 
     def test_pass_args_to_log(self):
-        a = log.KeywordArgumentAdapter(self.mock_log, {})
+        a = SavingAdapter(self.mock_log, {})
+
         message = 'message'
         exc_message = 'exception'
-        key = 'name'
         val = 'value'
         a.log(logging.DEBUG, message, name=val, exc_info=exc_message)
-        if six.PY3:
-            self.mock_log._log.assert_called_once_with(
-                logging.DEBUG,
-                message,
-                (),
-                extra={key: val, 'extra_keys': [key]},
-                exc_info=exc_message
-            )
-        else:
-            self.mock_log.log.assert_called_once_with(
-                logging.DEBUG,
-                message,
-                extra={key: val, 'extra_keys': [key]},
-                exc_info=exc_message
-            )
+
+        expected = {
+            'exc_info': exc_message,
+            'extra': {'name': val, 'extra_keys': ['name']},
+        }
+
+        actual = a.results[0]
+        self.assertEqual(message, actual[0])
+        self.assertEqual(expected, actual[1])
+        results = actual[2]
+        self.assertEqual(message, results[0])
+        self.assertEqual(expected, results[1])
 
     def test_pass_args_via_debug(self):
-        a = log.KeywordArgumentAdapter(self.mock_log, {})
+
+        a = SavingAdapter(self.mock_log, {})
         message = 'message'
         exc_message = 'exception'
-        key = 'name'
         val = 'value'
         a.debug(message, name=val, exc_info=exc_message)
-        # The adapter implementation for debug() is different for
-        # python 3, so we expect a different method to be called
-        # internally.
-        if six.PY3:
-            self.mock_log._log.assert_called_once_with(
-                logging.DEBUG,
-                message,
-                (),
-                extra={key: val, 'extra_keys': [key]},
-                exc_info=exc_message
-            )
-        else:
-            self.mock_log.debug.assert_called_once_with(
-                message,
-                extra={key: val, 'extra_keys': [key]},
-                exc_info=exc_message
-            )
+
+        expected = {
+            'exc_info': exc_message,
+            'extra': {'name': val, 'extra_keys': ['name']},
+        }
+
+        actual = a.results[0]
+        self.assertEqual(message, actual[0])
+        self.assertEqual(expected, actual[1])
+        results = actual[2]
+        self.assertEqual(message, results[0])
+        self.assertEqual(expected, results[1])
 
 
 class UnicodeConversionTestCase(BaseTestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.39.2/releasenotes/notes/log-rotation-595f8232cd987a6d.yaml 
new/oslo.log-3.42.3/releasenotes/notes/log-rotation-595f8232cd987a6d.yaml
--- old/oslo.log-3.39.2/releasenotes/notes/log-rotation-595f8232cd987a6d.yaml   
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.log-3.42.3/releasenotes/notes/log-rotation-595f8232cd987a6d.yaml   
2019-02-26 01:06:43.000000000 +0100
@@ -0,0 +1,10 @@
+---
+features:
+  - |
+    The following new config options will allow rotating log files,
+    especially useful on Windows:
+    * ``log_rotate_interval``
+    * ``log_rotate_interval_type``
+    * ``max_logfile_count``
+    * ``max_logfile_size_mb``
+    * ``log_rotation_type``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/releasenotes/notes/reno.cache 
new/oslo.log-3.42.3/releasenotes/notes/reno.cache
--- old/oslo.log-3.39.2/releasenotes/notes/reno.cache   2018-09-25 
21:47:36.000000000 +0200
+++ new/oslo.log-3.42.3/releasenotes/notes/reno.cache   1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
----
-file-contents: {}
-notes: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.39.2/releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml 
new/oslo.log-3.42.3/releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml
--- 
old/oslo.log-3.39.2/releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml   
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.log-3.42.3/releasenotes/notes/windows-eventlog-2beb0a6010e342eb.yaml   
    2019-02-26 01:06:43.000000000 +0100
@@ -0,0 +1,4 @@
+features:
+  - |
+    Added Windows EventLog functionality to oslo.log. Set use_eventlog to true
+    in the service's configuration file to use it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/releasenotes/source/index.rst 
new/oslo.log-3.42.3/releasenotes/source/index.rst
--- old/oslo.log-3.39.2/releasenotes/source/index.rst   2018-09-25 
21:44:42.000000000 +0200
+++ new/oslo.log-3.42.3/releasenotes/source/index.rst   2019-02-26 
01:06:43.000000000 +0100
@@ -6,6 +6,7 @@
     :maxdepth: 1
 
     unreleased
+    rocky
     queens
     pike
     ocata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.log-3.39.2/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
 
new/oslo.log-3.42.3/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
--- 
old/oslo.log-3.39.2/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
    2018-09-25 21:44:42.000000000 +0200
+++ 
new/oslo.log-3.42.3/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
    2019-02-26 01:06:43.000000000 +0100
@@ -5,11 +5,11 @@
 msgstr ""
 "Project-Id-Version: oslo.log Release Notes\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-02-09 00:09+0000\n"
+"POT-Creation-Date: 2018-07-26 22:58+0000\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"PO-Revision-Date: 2018-02-06 11:15+0000\n"
+"PO-Revision-Date: 2018-08-08 09:51+0000\n"
 "Last-Translator: Andi Chandler <[email protected]>\n"
 "Language-Team: English (United Kingdom)\n"
 "Language: en_GB\n"
@@ -106,6 +106,9 @@
 msgid "Queens Series Release Notes"
 msgstr "Queens Series Release Notes"
 
+msgid "Rocky Series Release Notes"
+msgstr "Rocky Series Release Notes"
+
 msgid "Switch to reno for managing release notes."
 msgstr "Switch to reno for managing release notes."
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/releasenotes/source/rocky.rst 
new/oslo.log-3.42.3/releasenotes/source/rocky.rst
--- old/oslo.log-3.39.2/releasenotes/source/rocky.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.log-3.42.3/releasenotes/source/rocky.rst   2019-02-26 
01:06:43.000000000 +0100
@@ -0,0 +1,6 @@
+===================================
+ Rocky Series Release Notes
+===================================
+
+.. release-notes::
+   :branch: stable/rocky
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/requirements.txt 
new/oslo.log-3.42.3/requirements.txt
--- old/oslo.log-3.39.2/requirements.txt        2018-09-25 21:44:42.000000000 
+0200
+++ new/oslo.log-3.42.3/requirements.txt        2019-02-26 01:06:43.000000000 
+0100
@@ -2,14 +2,14 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-pbr!=2.1.0,>=2.0.0 # Apache-2.0
-six>=1.10.0 # MIT
+pbr>=3.1.1 # Apache-2.0
+six>=1.11.0 # MIT
 oslo.config>=5.2.0 # Apache-2.0
-oslo.context>=2.19.2 # Apache-2.0
-oslo.i18n>=3.15.3 # Apache-2.0
-oslo.utils>=3.33.0 # Apache-2.0
-oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
-debtcollector>=1.2.0 # Apache-2.0
+oslo.context>=2.20.0 # Apache-2.0
+oslo.i18n>=3.20.0 # Apache-2.0
+oslo.utils>=3.36.0 # Apache-2.0
+oslo.serialization>=2.25.0 # Apache-2.0
+debtcollector>=1.19.0 # Apache-2.0
 pyinotify>=0.9.6;sys_platform!='win32' and sys_platform!='darwin' and 
sys_platform!='sunos5' # MIT
-python-dateutil>=2.5.3 # BSD
-monotonic>=0.6 # Apache-2.0
+python-dateutil>=2.7.0 # BSD
+monotonic>=1.4 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/setup.cfg 
new/oslo.log-3.42.3/setup.cfg
--- old/oslo.log-3.39.2/setup.cfg       2018-09-25 21:47:36.000000000 +0200
+++ new/oslo.log-3.42.3/setup.cfg       2019-02-26 01:09:16.000000000 +0100
@@ -4,7 +4,7 @@
 description-file = 
        README.rst
 author = OpenStack
-author-email = [email protected]
+author-email = [email protected]
 home-page = https://docs.openstack.org/oslo.log/latest
 classifier = 
        Environment :: OpenStack
@@ -34,12 +34,6 @@
 console_scripts = 
        convert-json = oslo_log.cmds.convert_json:main
 
-[build_sphinx]
-all-files = 1
-warning-is-error = 1
-source-dir = doc/source
-build-dir = doc/build
-
 [upload_sphinx]
 upload-dir = doc/build/html
 
@@ -57,7 +51,7 @@
 mapping_file = babel.cfg
 output_file = oslo_log/locale/oslo_log.pot
 
-[wheel]
+[bdist_wheel]
 universal = 1
 
 [egg_info]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/test-requirements.txt 
new/oslo.log-3.42.3/test-requirements.txt
--- old/oslo.log-3.39.2/test-requirements.txt   2018-09-25 21:44:42.000000000 
+0200
+++ new/oslo.log-3.42.3/test-requirements.txt   2019-02-26 01:06:43.000000000 
+0100
@@ -4,20 +4,15 @@
 
 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
 
-testrepository>=0.0.18 # Apache-2.0/BSD
-testtools>=2.2.0 # MIT
+stestr>=2.0.0 # Apache-2.0
+testtools>=2.3.0 # MIT
 mock>=2.0.0 # BSD
-oslotest>=3.2.0 # Apache-2.0
+oslotest>=3.3.0 # Apache-2.0
 
 # when we can require tox>= 1.4, this can go into tox.ini:
 #  [testenv:cover]
 #  deps = {[testenv]deps} coverage
-coverage!=4.4,>=4.0 # Apache-2.0
-
-# this is required for the docs build jobs
-sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
-openstackdocstheme>=1.18.1 # Apache-2.0
-reno>=2.5.0 # Apache-2.0
+coverage>=4.5.1 # Apache-2.0
 
 # Bandit security code scanner
 bandit>=1.1.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.log-3.39.2/tox.ini new/oslo.log-3.42.3/tox.ini
--- old/oslo.log-3.39.2/tox.ini 2018-09-25 21:44:42.000000000 +0200
+++ new/oslo.log-3.42.3/tox.ini 2019-02-26 01:06:43.000000000 +0100
@@ -3,16 +3,19 @@
 envlist = py35,py27,pep8
 
 [testenv]
+whitelist_externals =
+  find
 setenv =
     VIRTUAL_ENV={envdir}
     BRANCH_NAME=master
     CLIENT_NAME=oslo.log
-install_command = {toxinidir}/tools/tox_install.sh 
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/rocky}
 {opts} {packages}
+install_command = {toxinidir}/tools/tox_install.sh 
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
 {opts} {packages}
 deps = -r{toxinidir}/test-requirements.txt
        -e.[fixtures]
 commands =
-  python setup.py test --coverage --coverage-package-name=oslo_log --slowest 
--testr-args='{posargs}'
-  coverage report --show-missing
+  find . -type f -name "*.pyc" -delete
+  stestr run {posargs}
+  stestr slowest
 
 [testenv:pep8]
 basepython = python3
@@ -27,16 +30,22 @@
 
 [testenv:docs]
 basepython = python3
-commands = python setup.py build_sphinx
+deps = -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build -a -E -W -b html doc/source doc/build/html
 
 [testenv:releasenotes]
 basepython = python3
-commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html
+deps = -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build -a -E -W -b html releasenotes/source 
releasenotes/build/html
 
 [testenv:cover]
 basepython = python3
 commands =
-  python setup.py test --coverage --coverage-package-name=oslo_log 
--testr-args='{posargs}'
+  coverage erase
+  {[testenv]commands}
+  coverage combine
+  coverage html -d cover
+  coverage xml -o cover/coverage.xml
   coverage report --show-missing
 
 [testenv:bandit]
@@ -52,7 +61,6 @@
 
 [flake8]
 # E123, E125 skipped as they are invalid PEP-8.
-
 show-source = True
 ignore = E123,E125,H405
 exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,__init__.py


Reply via email to