diff --git a/nose2/plugins/junitxml.py b/nose2/plugins/junitxml.py
index e61a08b..05cfee6 100644
--- a/nose2/plugins/junitxml.py
+++ b/nose2/plugins/junitxml.py
@@ -164,11 +164,10 @@ class JUnitXmlReporter(events.Plugin):
             skipped.set('message', 'expected test failure')
             skipped.text = msg
 
-        system_err = ET.SubElement(testcase, 'system-err')
-        system_err.text = string_cleanup(
+        system_out = ET.SubElement(testcase, 'system-out')
+        system_out.text = string_cleanup(
             '\n'.join(event.metadata.get('logs', '')),
-            self.keep_restricted
-        )
+            self.keep_restricted)
 
     def _check(self):
         if not os.path.exists(os.path.dirname(self.path)):

junit-xml always add logs in system_err
This is really strange because logs are typically not outputted in stderr. 
In nosetests we did not have logs in case of successful test but now they are always displayed as system_err. 

May it be possible to output them in system_out instead ?

In the testOutcome handler just replace system_err with this code ...

```python
        system_out = ET.SubElement(testcase, 'system-out')
        system_out.text = string_cleanup(
            '\n'.join(event.metadata.get('logs', '')),
            self.keep_restricted
        )

```
diff --git a/nose2/tests/unit/test_junitxml.py b/nose2/tests/unit/test_junitxml.py
index 706daa2..0bb96f0 100644
--- a/nose2/tests/unit/test_junitxml.py
+++ b/nose2/tests/unit/test_junitxml.py
@@ -145,7 +145,6 @@ class TestJunitXmlPlugin(TestCase):
         test(self.result)
         case = self.plugin.tree.find('testcase')
         error = case.find('error')
-        ending = six.u(' \uFFFD\uFFFD')
         assert error is not None
         self.assertRegex(error.text, self.EXPECTED_RE_SAFE)
 
@@ -277,22 +276,22 @@ class TestJunitXmlPlugin(TestCase):
         self.assertEqual(inital_dir,
                          os.path.dirname(os.path.realpath(self.plugin.path)))
 
-    def test_xml_contains_empty_system_err_without_logcapture(self):
+    def test_xml_contains_empty_system_out_without_logcapture(self):
         test = self.case('test_with_log')
         test(self.result)
         case = self.plugin.tree.find('testcase')
-        system_err = case.find('system-err')
-        assert system_err is not None
-        assert not system_err.text
+        system_out = case.find('system-out')
+        assert system_out is not None
+        assert not system_out.text
 
-    def test_xml_contains_log_message_in_system_err_with_logcapture(self):
+    def test_xml_contains_log_message_in_system_out_with_logcapture(self):
         self.logcapture_plugin = logcapture.LogCapture(session=self.session)
         self.logcapture_plugin.register()
 
         test = self.case('test_with_log')
         test(self.result)
         case = self.plugin.tree.find('testcase')
-        system_err = case.find('system-err')
-        assert system_err is not None
-        assert 'log message' in system_err.text
-        assert 'INFO' in system_err.text
+        system_out = case.find('system-out')
+        assert system_out is not None
+        assert 'log message' in system_out.text
+        assert 'INFO' in system_out.text

pip install -e .
parse_log_pytest
requirements.txt
nose2 cov-core>=1.12 pytest
apt-get update apt-get install -y gcc
3.5
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
cov-core==1.15.0
coverage==6.2
importlib-metadata==4.8.3
iniconfig==1.1.1
-e git+https://github.com/nose-devs/nose2.git@f4ab61b95a67aecf61abb161e4cf138bf8da6ce8#egg=nose2
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0

name: nose2
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - cov-core==1.15.0
      - coverage==6.2
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/nose2

nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_xml_contains_empty_system_out_without_logcapture nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_xml_contains_log_message_in_system_out_with_logcapture
nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_error_bad_xml nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_error_bad_xml_b nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_error_bad_xml_b_keep nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_error_bad_xml_keep nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_error_includes_traceback nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_failure_includes_traceback nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_generator_test_full_name_correct nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_generator_test_name_correct nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_params_test_full_name_correct nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_params_test_name_correct nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_skip_includes_skipped nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_success_added_to_xml nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_writes_xml_file_at_end nose2/tests/unit/test_junitxml.py::TestJunitXmlPlugin::test_xml_file_path_is_not_affected_by_chdir_in_test
nose2/plugins/junitxml.py
nose2/plugins/junitxml.py