////
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
////

https://github.com/apache/logging-parent/actions[image:https://github.com/apache/logging-parent/workflows/build/badge.svg[Actions Status]]
https://search.maven.org/search?q=g:org.apache.logging%20a:logging-parent[image:https://img.shields.io/maven-central/v/org.apache.logging/logging-parent.svg[Maven Central]]
https://www.apache.org/licenses/LICENSE-2.0.txt[image:https://img.shields.io/github/license/apache/logging-parent.svg[License]]

Parent project **internally** used in Maven-based projects of https://logging.apache.org[the Apache Logging Services] projects.
See https://logging.apache.org/logging-parent/latest[the project website] for further information.
