diff --git a/.editorconfig b/.editorconfig index f9451f42f..e50b5f2f1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -205,4 +205,10 @@ dotnet_diagnostic.KR1037.severity = none # NUnit2045: Use Assert.Multiple dotnet_diagnostic.NUnit2045.severity = none # IDE0079: Remove unnecessary suppressions -dotnet_diagnostic.IDE0079.severity = none \ No newline at end of file +dotnet_diagnostic.IDE0079.severity = none + +[*.xml] +tab_width = 2 +indent_size = 2 +indent_style = space +end_of_line = crlf \ No newline at end of file diff --git a/.github/workflows/git-broadcast.yml b/.github/workflows/git-broadcast.yml index 5541bf15e..513b8c11d 100644 --- a/.github/workflows/git-broadcast.yml +++ b/.github/workflows/git-broadcast.yml @@ -1,3 +1,19 @@ +# +# 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 +# +# http://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. +# name: Broadcast master updates to satellites on: diff --git a/.gitignore b/.gitignore index 0906a46a3..a2d863547 100644 --- a/.gitignore +++ b/.gitignore @@ -87,9 +87,6 @@ ipch/ *.vspx *.sap -# TFS 2012 Local Workspace -$tf/ - # Guidance Automation Toolkit *.gpState @@ -169,18 +166,6 @@ AppPackages/ # but keep track of directories ending in .cache !*.[Cc]ache/ -# Others -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - # RIA/Silverlight projects Generated_Code/ @@ -240,6 +225,8 @@ src/GeneratedAssemblyInfo.cs *.orig *.old *.swp +node +node_modules build-tools buildreports vs_buildtools.exe @@ -247,4 +234,6 @@ dotnetfx35.exe *.exe /src/Binaries/* -local-tasks/*.generated.js \ No newline at end of file +local-tasks/*.generated.js +/.flattened-pom.xml +validate \ No newline at end of file diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 000000000..45a03401e --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1,13 @@ +-Djava.awt.headless=true +--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED +--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED +--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED +--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED +--add-opens java.base/sun.nio.ch=ALL-UNNAMED +--add-opens java.base/java.io=ALL-UNNAMED diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 000000000..cb28b0e37 Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 000000000..08ea486aa --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# 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 +# +# http://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. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.0/apache-maven-3.9.0-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/antora-playbook.yaml b/antora-playbook.yaml new file mode 100644 index 000000000..6b2a2c3b1 --- /dev/null +++ b/antora-playbook.yaml @@ -0,0 +1,141 @@ +# +# 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 +# +# http://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. +# + +site: + title: Apache log4net + url: "https://logging.apache.org/log4net" + start_page: "ROOT::index.adoc" + +content: + sources: + - url: . + branches: HEAD + start_paths: + - target/generated-site/antora + edit_url: + +runtime: + log: + # Fail on warnings + failure_level: warn + +asciidoc: + extensions: + - "@asciidoctor/tabs" + +ui: + + bundle: + url: "https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable" + snapshot: true + + # Template files: https://github.com/asciidoctor/asciidoctor-docs-ui/blob/main/src + # Template variables: https://docs.antora.org/antora-ui-default/templates + supplemental_files: + + # Add `@asciidoctor/tabs` extension styles + - path: css/vendor/tabs.css + contents: ./node_modules/@asciidoctor/tabs/dist/css/tabs.css + + # Add `@asciidoctor/tabs` extension scripts + - path: js/vendor/tabs.js + contents: ./node_modules/@asciidoctor/tabs/dist/js/tabs.js + + - path: partials/footer-scripts.hbs + contents: | + + + + + {{#if env.SITE_SEARCH_PROVIDER}} + {{> search-scripts}} + {{/if}} + + - path: partials/head-styles.hbs + contents: | + + + + + + + - path: partials/header-content.hbs + contents: | +
+ +
+ + - path: partials/footer-content.hbs + contents: | + + + # Disable component version selector + - path: partials/nav-explore.hbs + contents: "" + + # Fix the `Edit this page` link + - path: partials/edit-this-page.hbs + contents: | +
Edit this Page
diff --git a/mvnw b/mvnw new file mode 100755 index 000000000..af46563a2 --- /dev/null +++ b/mvnw @@ -0,0 +1,311 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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 +# +# http://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +LINE_SEPARATOR=" +" + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + "-Dline.separator=$LINE_SEPARATOR" \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 000000000..3cb089f47 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,212 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* +@REM Do not remove the blank lines +(set \n=^^^ + +^ + +) + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -Dline.separator=%\n% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/package-lock.json b/package-lock.json index 41fed7e61..ec1473049 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,17 @@ { "name": "log4net", - "version": "2.0.12", + "version": "3.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "log4net", - "version": "2.0.12", + "version": "3.0.5", "license": "Apache-2.0", "devDependencies": { + "@antora/cli": "^3.2.0-alpha.4", + "@antora/site-generator-default": "^3.2.0-alpha.4", + "@asciidoctor/tabs": "^1.0.0-beta.6", "cross-env": "^7.0.2", "gulp-debug": "^4.0.0", "gulp-rename": "^2.0.0", @@ -22,6 +25,499 @@ "zarro": "^1.178.0" } }, + "node_modules/@antora/asciidoc-loader": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.2.0-alpha.6.tgz", + "integrity": "sha512-nxHlNCMrtzdhkNUItSQwItsusY2ZorZsmcywgr+dLf35aqrjdCH9xGT7ai09vjbuCNn6Die81Nwx5wMiO3YXog==", + "dev": true, + "dependencies": { + "@antora/logger": "3.2.0-alpha.6", + "@antora/user-require-helper": "~2.0", + "@asciidoctor/core": "~2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/cli": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.2.0-alpha.6.tgz", + "integrity": "sha512-9sVQUM9grAdBnJooM0eoOjZ4pYEAjsbvjzkqSyDjPtWl7ullY3xnPXD/DK8RACYBjMwSOXqURar4NZWV5EwbdQ==", + "dev": true, + "dependencies": { + "@antora/logger": "3.2.0-alpha.6", + "@antora/playbook-builder": "3.2.0-alpha.6", + "@antora/user-require-helper": "~2.0", + "commander": "~12.1" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@antora/content-aggregator": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.2.0-alpha.6.tgz", + "integrity": "sha512-8Sva2aJUl1ab6/DrSgE3Tuu3mvNSFAJdJQCDHC20kQJvZHjpzDccpCom3CdcdsPkFndBAH4K40OOIxftotQKZQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/logger": "3.2.0-alpha.6", + "@antora/user-require-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "isomorphic-git": "~1.25", + "js-yaml": "~4.1", + "multi-progress": "~4.0", + "picomatch": "~4.0", + "progress": "~2.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/content-aggregator/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@antora/content-aggregator/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/content-aggregator/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/content-classifier": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.2.0-alpha.6.tgz", + "integrity": "sha512-RAE4fmykoGIC+8oAr6rXLKfTzIwaPGmmtOjjm1qf0ZWxuE0NIdP1PLuQ9/Sz0/3Z5x8OwPJlNJeccA3R/zHpwQ==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.2.0-alpha.6", + "@antora/logger": "3.2.0-alpha.6", + "mime-types": "~2.1", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/content-classifier/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/content-classifier/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/document-converter": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.2.0-alpha.6.tgz", + "integrity": "sha512-qDjGK/rg/zBTWjmIHd6S4YL7g/DNl3B5CRlHZGV0LC1qGmzvM6LltDUv4w9W342/9wGDmYu25GivOKQsuPqbTQ==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.2.0-alpha.6" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/expand-path-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-2.0.0.tgz", + "integrity": "sha512-CSMBGC+tI21VS2kGW3PV7T2kQTM5eT3f2GTPVLttwaNYbNxDve08en/huzszHJfxo11CcEs26Ostr0F2c1QqeA==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@antora/file-publisher": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.2.0-alpha.6.tgz", + "integrity": "sha512-XsgPP3uPSYEmLr9yBhBJUF7AZglqsuuZAhYjqAVzIwYG+fWtmMxuiF3CE2I7k7POKaL+xfiA2YfgS+5Xm/wsTQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/user-require-helper": "~2.0", + "vinyl": "~3.0", + "yazl": "~2.5" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/file-publisher/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/file-publisher/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/logger": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.2.0-alpha.6.tgz", + "integrity": "sha512-8QZh+iHgqVZVWoS/oQ9w92kRyezQVm1j9UE5crVtsJK1bJc75RZOUQUBCCwxOKto+Ci8jCcZvdcpTMz023UkTg==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "pino": "~9.2", + "pino-pretty": "~11.2", + "sonic-boom": "~4.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/navigation-builder": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.2.0-alpha.6.tgz", + "integrity": "sha512-rFpMCGeuaBJmGLkhM3t9NhMiJH2X3uIg48YCaYtJkxsgX6MPFxF+nS08RygvWke1RsBfe896L2pqVrcgs2M2Xw==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.2.0-alpha.6" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/page-composer": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.2.0-alpha.6.tgz", + "integrity": "sha512-UA6s1m2qhyzX6WnWhXzLq/5MrGbB5/2PjPo+A1zUTzRfZmSIULjNzHDWj3KoYP8tQuUMbbyMnJmV4VV7ZhqD1w==", + "dev": true, + "dependencies": { + "@antora/logger": "3.2.0-alpha.6", + "handlebars": "~4.7", + "require-from-string": "~2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/playbook-builder": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.2.0-alpha.6.tgz", + "integrity": "sha512-d2nVNl5PWxiotvkLwhYeEphgDO8yh8FkePOZHtLAxKkAiieQRf/nretHMQNE+B9/l7pPPb6E6V+SDeCxa6Jb+g==", + "dev": true, + "dependencies": { + "@iarna/toml": "~2.2", + "convict": "~6.2", + "js-yaml": "~4.1", + "json5": "~2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/redirect-producer": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.2.0-alpha.6.tgz", + "integrity": "sha512-PjfGPWak5oT/ehWJsbAsD5B/Yisl5DuB7gDPP5JWbK/4VrfepkpZodBolVMNs1G7ieThJDfkTZEG5K3fq1BVfg==", + "dev": true, + "dependencies": { + "vinyl": "~3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/redirect-producer/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/redirect-producer/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/site-generator": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.2.0-alpha.6.tgz", + "integrity": "sha512-ECVq7XarGturr88oQ85AL8T8NE/UDfaNoUkns0cqN3bXAnBfWMRAqVh/LN5e5WmW6oCyXgmaH2eVlxhZ02PISA==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.2.0-alpha.6", + "@antora/content-aggregator": "3.2.0-alpha.6", + "@antora/content-classifier": "3.2.0-alpha.6", + "@antora/document-converter": "3.2.0-alpha.6", + "@antora/file-publisher": "3.2.0-alpha.6", + "@antora/logger": "3.2.0-alpha.6", + "@antora/navigation-builder": "3.2.0-alpha.6", + "@antora/page-composer": "3.2.0-alpha.6", + "@antora/playbook-builder": "3.2.0-alpha.6", + "@antora/redirect-producer": "3.2.0-alpha.6", + "@antora/site-mapper": "3.2.0-alpha.6", + "@antora/site-publisher": "3.2.0-alpha.6", + "@antora/ui-loader": "3.2.0-alpha.6", + "@antora/user-require-helper": "~2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/site-generator-default": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/site-generator-default/-/site-generator-default-3.2.0-alpha.6.tgz", + "integrity": "sha512-CKa4042ltQ3ZuWtoDKPa6CAPlwtSRFZH4GCByofhjZ2Xpey3KzIaxose9ewUdLvvrzk4tP+Ub/gtQYp0sNqnrw==", + "dev": true, + "dependencies": { + "@antora/site-generator": "3.2.0-alpha.6" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/site-mapper": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.2.0-alpha.6.tgz", + "integrity": "sha512-4ads+/5o2JcNWhxZZmbaaOMQdnD6EnjjaTmkFQj/VUCmlUo6p8TkjxW0xDEFBLztVDHMeoZ9R+czNcvPyoc8Fw==", + "dev": true, + "dependencies": { + "@antora/content-classifier": "3.2.0-alpha.6", + "vinyl": "~3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/site-mapper/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/site-mapper/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/site-publisher": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.2.0-alpha.6.tgz", + "integrity": "sha512-Sh2iMuwmv1xvWcuHEVhU40odmxWXmnjPMzWDHcKMMZtiqVF/eZQyIbY3vuumdF5aIwyyqZxNTQQVRH15Z6RbOg==", + "dev": true, + "dependencies": { + "@antora/file-publisher": "3.2.0-alpha.6" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/ui-loader": { + "version": "3.2.0-alpha.6", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.2.0-alpha.6.tgz", + "integrity": "sha512-PlIKJLGwxOr5apt+EJ10R8RGz66pjdEns1hPYEwLAorXyPPidGYy+hsMKcBWvI8PdL9OAgw82xI8I4TjW+C6VQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "fast-glob": "~3.3", + "hpagent": "~1.2", + "js-yaml": "~4.1", + "picomatch": "~4.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~3.0", + "yauzl": "~3.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@antora/ui-loader/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@antora/ui-loader/node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@antora/ui-loader/node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", + "dev": true, + "dependencies": { + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@antora/ui-loader/node_modules/yauzl": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", + "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@antora/user-require-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", + "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0" + }, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@asciidoctor/core": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz", + "integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==", + "dev": true, + "dependencies": { + "asciidoctor-opal-runtime": "0.3.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11", + "npm": ">=5.0.0", + "yarn": ">=1.1.0" + } + }, + "node_modules/@asciidoctor/tabs": { + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@asciidoctor/tabs/-/tabs-1.0.0-beta.6.tgz", + "integrity": "sha512-gGZnW7UfRXnbiyKNd9PpGKtSuD8+DsqaaTSbQ1dHVkZ76NaolLhdQg8RW6/xqN3pX1vWZEcF4e81+Oe9rNRWxg==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@gulpjs/messages": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", @@ -43,6 +539,12 @@ "node": ">=10.13.0" } }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", @@ -288,6 +790,18 @@ "node": ">=10.0.0" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -405,6 +919,12 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -621,6 +1141,37 @@ "node": ">=8" } }, + "node_modules/asciidoctor-opal-runtime": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", + "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "dev": true, + "dependencies": { + "glob": "7.1.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/asciidoctor-opal-runtime/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -662,6 +1213,12 @@ "node": ">= 10.13.0" } }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "dev": true + }, "node_modules/async-settle": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-2.0.0.tgz", @@ -680,6 +1237,15 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -879,6 +1445,18 @@ "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", "dev": true }, + "node_modules/cache-directory": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", + "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "dev": true, + "dependencies": { + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -969,6 +1547,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/clean-git-ref": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "dev": true + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -1069,6 +1653,12 @@ "color-support": "bin.js" } }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1099,6 +1689,19 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/convict": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "dev": true, + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "yargs-parser": "^20.2.7" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/copy-props": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-4.0.0.tgz", @@ -1127,6 +1730,18 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/cross-env": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", @@ -1180,6 +1795,15 @@ "node": ">=0.10" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1213,7 +1837,22 @@ "strip-dirs": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decompress-tar": { @@ -1399,6 +2038,12 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "dev": true }, + "node_modules/diff3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "dev": true + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1557,6 +2202,24 @@ "through": "^2.3.8" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/exec-step": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/exec-step/-/exec-step-0.14.0.tgz", @@ -1633,6 +2296,12 @@ "node": ">= 0.10" } }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1646,9 +2315,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1658,7 +2327,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { @@ -1676,6 +2345,21 @@ "fastest-levenshtein": "^1.0.7" } }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -2502,16 +3186,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-zip/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/gulplog": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-2.2.0.tgz", @@ -2524,6 +3198,27 @@ "node": ">= 10.13.0" } }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2640,6 +3335,12 @@ "node": ">= 0.4" } }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "dev": true + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -2658,6 +3359,15 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3154,12 +3864,81 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-git": { + "version": "1.25.10", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", + "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "dev": true, + "dependencies": { + "async-lock": "^1.4.1", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/isomorphic-git/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/isomorphic-git/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -3190,6 +3969,18 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -3292,6 +4083,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "node_modules/lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", @@ -3405,6 +4202,18 @@ "node": ">= 0.6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -3423,12 +4232,30 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/minimisted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", + "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/multi-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", + "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "dev": true, + "peerDependencies": { + "progress": "^2.0.0" + } + }, "node_modules/multimatch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", @@ -3454,6 +4281,12 @@ "node": ">= 10.13.0" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -3833,6 +4666,15 @@ "node": ">=0.10.0" } }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3965,87 +4807,288 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pino": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", + "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "node_modules/pino-abstract-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/pino-abstract-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "through": "~2.3" + "safe-buffer": "~5.2.0" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/pino-pretty": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz", + "integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "bin": { + "pino-pretty": "bin.js" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "node_modules/pino-pretty/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "node_modules/pino-pretty/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/pino-pretty/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.2.0" } }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "dev": true + }, "node_modules/plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -4085,12 +5128,36 @@ "node": ">=6" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/promise-polyfill": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", @@ -4109,6 +5176,16 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4153,6 +5230,12 @@ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "dev": true }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -4200,6 +5283,15 @@ "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=", "dev": true }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/rechoir": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", @@ -4286,6 +5378,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -4498,6 +5599,15 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4510,6 +5620,12 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "dev": true + }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -4550,6 +5666,19 @@ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4577,6 +5706,12 @@ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, + "node_modules/should-proxy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", + "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "dev": true + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -4600,6 +5735,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/simple-git": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.22.0.tgz", @@ -4624,6 +5804,24 @@ "node": ">=8" } }, + "node_modules/sonic-boom": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", + "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sparkles": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", @@ -4677,6 +5875,15 @@ "node": "*" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -4931,6 +6138,18 @@ "is-natural-number": "^4.0.1" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5047,6 +6266,15 @@ "b4a": "^1.6.4" } }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "dev": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -5164,6 +6392,19 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -5267,6 +6508,15 @@ "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, + "node_modules/unxhr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "dev": true, + "engines": { + "node": ">=8.11" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5577,6 +6827,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5654,6 +6910,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/xml2js": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", diff --git a/package.json b/package.json index 6fef98ab0..487a08938 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,9 @@ "typescript": "^5.3.3", "which": "^2.0.2", "yafs": "^1.36.0", - "zarro": "^1.178.0" + "zarro": "^1.178.0", + "@antora/cli": "^3.2.0-alpha.4", + "@antora/site-generator-default": "^3.2.0-alpha.4", + "@asciidoctor/tabs": "^1.0.0-beta.6" } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3477dbb62..9e0067d44 100644 --- a/pom.xml +++ b/pom.xml @@ -1,35 +1,54 @@ + - + ~ 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 + ~ + ~ http://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. + --> + + 4.0.0 - log4net - apache-log4net + + + org.apache.logging + logging-parent + 11.0.0 + + pom - 3.0.5 + org.apache.logging.log4net + apache-log4net + ${revision} + Apache log4net Logging framework for Microsoft .NET Framework. - https://logging.apache.org/log4net/ + https://logging.apache.org/log4net 2004 + + + scm:git:https://github.com/apache/logging-log4net + scm:git:https://github.com/apache/logging-log4net + https://github.com/apache/logging-log4net + + - Github + GitHub Issues https://github.com/apache/logging-log4net/issues + logging commits: all git commits of the logging projects including log4net @@ -39,157 +58,131 @@ https://mail-archives.apache.org/mod_mbox/logging-commits/ - - - Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - scm:git:https://github.com/apache/logging-log4net - scm:git:https://github.com/apache/logging-log4net - https://github.com/apache/logging-log4net - - - Apache Software Foundation - https://www.apache.org - + + + GitHub Actions + https://github.com/apache/logging-log4net/actions + + + + + + 0.10.0-SNAPSHOT + + + 2024-05-09T11:40:45Z + + + true + true + true + + + + + + + + org.apache.logging.log4j + log4j-changelog + ${project.version} + + + + org.apache.logging.log4j + log4j-docgen + ${project.version} + + + + org.apache.logging.log4j + log4j-docgen-asciidoctor-extension + ${project.version} + + + + + + + - org.apache.rat - apache-rat-plugin - 0.11 + org.codehaus.mojo + flatten-maven-plugin + ${flatten-maven-plugin.version} + + + flatten-bom + + flatten + + process-resources + false + + + + - org.apache.maven.plugins - maven-site-plugin - 3.4 - - ${basedir}/src/site/site.vm - + org.codehaus.mojo + xml-maven-plugin + + + validate-changelog + + + + src/changelog + + **/*.xml + + true + + + + + - - - - + - org.apache.maven.plugins - maven-site-plugin - 3.4 + com.diffplug.spotless + spotless-maven-plugin - ${basedir}/src/site/site.vm + + + + **/.idea/* + src/changelog/**/*.xml + **/bin/**/*.xml + **/*.y*ml + + + - + org.apache.rat apache-rat-plugin - 0.12 + true ${basedir}/rat.excludesFile - - org.apache.maven.plugins - maven-project-info-reports-plugin - 2.8.1 - - - - cim - scm - license - project-team - - - - - - - - Davyd McColl - fluffynuts - - - Jan Friedrich - freeandnil - - - Curt Arnold - carnold - - - Stefan Bodewig - bodewig - - - Nicko Cadell - nicko - - - Niall Daley - niall - - - Gert Driesen - drieseng - - - Ron Grabowski - rgrabowski - - - Dominik Psenner - dpsenner - - - - - Erik Mavrinac - - - Julian Biddle - - - Daniel Cazzulino - - - Aspi Havewala - - - Rick Hobbs - - - Lance Nehring - - - Angelika Schnagl - - - Edward Smit - - - Douglas de la Torre - - - Pavlos Touboulidis - - - Thomas Voss - - - Jarrod Alexander - - - - - - - logging.site - file:///${user.dir}/target/site-deploy - - + \ No newline at end of file diff --git a/rat.excludesFile b/rat.excludesFile index 9527f4be6..cae188f86 100644 --- a/rat.excludesFile +++ b/rat.excludesFile @@ -1,5 +1,6 @@ rat.excludesFile .editorconfig +.gitattributes **/*.suo **/*.sln **/*.user @@ -23,9 +24,13 @@ rat.excludesFile **/*.snk **/*.readme **/*.json +**/*.globalconfig src/.idea/** src/integration-testing/** build/** build-tools/** doc/** -src/site/** \ No newline at end of file +src/site/** +site.legacy/** +NOTICE +LICENSE \ No newline at end of file diff --git a/src/site/apt/roadmap.apt b/site.legacy/apt/roadmap.apt similarity index 100% rename from src/site/apt/roadmap.apt rename to site.legacy/apt/roadmap.apt diff --git a/src/site/resources/css/bootstrap.css b/site.legacy/resources/css/bootstrap.css similarity index 100% rename from src/site/resources/css/bootstrap.css rename to site.legacy/resources/css/bootstrap.css diff --git a/src/site/resources/css/bootstrap.min.css b/site.legacy/resources/css/bootstrap.min.css similarity index 100% rename from src/site/resources/css/bootstrap.min.css rename to site.legacy/resources/css/bootstrap.min.css diff --git a/src/site/resources/css/site.css b/site.legacy/resources/css/site.css similarity index 100% rename from src/site/resources/css/site.css rename to site.legacy/resources/css/site.css diff --git a/src/site/resources/doap_log4net.rdf b/site.legacy/resources/doap_log4net.rdf similarity index 100% rename from src/site/resources/doap_log4net.rdf rename to site.legacy/resources/doap_log4net.rdf diff --git a/src/site/resources/images/collapsed.gif b/site.legacy/resources/images/collapsed.gif similarity index 100% rename from src/site/resources/images/collapsed.gif rename to site.legacy/resources/images/collapsed.gif diff --git a/src/site/resources/images/expanded.gif b/site.legacy/resources/images/expanded.gif similarity index 100% rename from src/site/resources/images/expanded.gif rename to site.legacy/resources/images/expanded.gif diff --git a/src/site/resources/images/ls-logo.jpg b/site.legacy/resources/images/ls-logo.jpg similarity index 100% rename from src/site/resources/images/ls-logo.jpg rename to site.legacy/resources/images/ls-logo.jpg diff --git a/src/site/resources/images/maven.png b/site.legacy/resources/images/maven.png similarity index 100% rename from src/site/resources/images/maven.png rename to site.legacy/resources/images/maven.png diff --git a/src/site/resources/img/glyphicons-halflings-white.png b/site.legacy/resources/img/glyphicons-halflings-white.png similarity index 100% rename from src/site/resources/img/glyphicons-halflings-white.png rename to site.legacy/resources/img/glyphicons-halflings-white.png diff --git a/src/site/resources/img/glyphicons-halflings.png b/site.legacy/resources/img/glyphicons-halflings.png similarity index 100% rename from src/site/resources/img/glyphicons-halflings.png rename to site.legacy/resources/img/glyphicons-halflings.png diff --git a/src/site/resources/js/bootstrap.js b/site.legacy/resources/js/bootstrap.js similarity index 100% rename from src/site/resources/js/bootstrap.js rename to site.legacy/resources/js/bootstrap.js diff --git a/src/site/resources/js/bootstrap.min.js b/site.legacy/resources/js/bootstrap.min.js similarity index 100% rename from src/site/resources/js/bootstrap.min.js rename to site.legacy/resources/js/bootstrap.min.js diff --git a/src/site/resources/js/jquery.js b/site.legacy/resources/js/jquery.js similarity index 100% rename from src/site/resources/js/jquery.js rename to site.legacy/resources/js/jquery.js diff --git a/src/site/resources/js/jquery.min.js b/site.legacy/resources/js/jquery.min.js similarity index 100% rename from src/site/resources/js/jquery.min.js rename to site.legacy/resources/js/jquery.min.js diff --git a/src/site/resources/js/prettify.js b/site.legacy/resources/js/prettify.js similarity index 100% rename from src/site/resources/js/prettify.js rename to site.legacy/resources/js/prettify.js diff --git a/src/site/resources/js/prettify.min.js b/site.legacy/resources/js/prettify.min.js similarity index 100% rename from src/site/resources/js/prettify.min.js rename to site.legacy/resources/js/prettify.min.js diff --git a/src/site/resources/js/site.js b/site.legacy/resources/js/site.js similarity index 100% rename from src/site/resources/js/site.js rename to site.legacy/resources/js/site.js diff --git a/src/site/site.vm b/site.legacy/site.vm similarity index 100% rename from src/site/site.vm rename to site.legacy/site.vm diff --git a/src/site/site.xml b/site.legacy/site.xml similarity index 100% rename from src/site/site.xml rename to site.legacy/site.xml diff --git a/src/site/xdoc/history.xml b/site.legacy/xdoc/history.xml similarity index 100% rename from src/site/xdoc/history.xml rename to site.legacy/xdoc/history.xml diff --git a/src/site/xdoc/index.xml b/site.legacy/xdoc/index.xml similarity index 100% rename from src/site/xdoc/index.xml rename to site.legacy/xdoc/index.xml diff --git a/src/site/xdoc/release/building.xml b/site.legacy/xdoc/release/building.xml similarity index 100% rename from src/site/xdoc/release/building.xml rename to site.legacy/xdoc/release/building.xml diff --git a/src/site/xdoc/release/config-examples.xml b/site.legacy/xdoc/release/config-examples.xml similarity index 100% rename from src/site/xdoc/release/config-examples.xml rename to site.legacy/xdoc/release/config-examples.xml diff --git a/src/site/xdoc/release/download.xml b/site.legacy/xdoc/release/download.xml similarity index 100% rename from src/site/xdoc/release/download.xml rename to site.legacy/xdoc/release/download.xml diff --git a/src/site/xdoc/release/example-apps.xml b/site.legacy/xdoc/release/example-apps.xml similarity index 100% rename from src/site/xdoc/release/example-apps.xml rename to site.legacy/xdoc/release/example-apps.xml diff --git a/src/site/xdoc/release/faq.xml b/site.legacy/xdoc/release/faq.xml similarity index 100% rename from src/site/xdoc/release/faq.xml rename to site.legacy/xdoc/release/faq.xml diff --git a/src/site/xdoc/release/features.xml b/site.legacy/xdoc/release/features.xml similarity index 100% rename from src/site/xdoc/release/features.xml rename to site.legacy/xdoc/release/features.xml diff --git a/src/site/xdoc/release/framework-support.xml b/site.legacy/xdoc/release/framework-support.xml similarity index 100% rename from src/site/xdoc/release/framework-support.xml rename to site.legacy/xdoc/release/framework-support.xml diff --git a/src/site/xdoc/release/manual/configuration.xml b/site.legacy/xdoc/release/manual/configuration.xml similarity index 100% rename from src/site/xdoc/release/manual/configuration.xml rename to site.legacy/xdoc/release/manual/configuration.xml diff --git a/src/site/xdoc/release/manual/contexts.xml b/site.legacy/xdoc/release/manual/contexts.xml similarity index 100% rename from src/site/xdoc/release/manual/contexts.xml rename to site.legacy/xdoc/release/manual/contexts.xml diff --git a/src/site/xdoc/release/manual/installation.xml b/site.legacy/xdoc/release/manual/installation.xml similarity index 100% rename from src/site/xdoc/release/manual/installation.xml rename to site.legacy/xdoc/release/manual/installation.xml diff --git a/src/site/xdoc/release/manual/internals.xml b/site.legacy/xdoc/release/manual/internals.xml similarity index 100% rename from src/site/xdoc/release/manual/internals.xml rename to site.legacy/xdoc/release/manual/internals.xml diff --git a/src/site/xdoc/release/manual/introduction.xml b/site.legacy/xdoc/release/manual/introduction.xml similarity index 100% rename from src/site/xdoc/release/manual/introduction.xml rename to site.legacy/xdoc/release/manual/introduction.xml diff --git a/src/site/xdoc/release/manual/plugins.xml b/site.legacy/xdoc/release/manual/plugins.xml similarity index 100% rename from src/site/xdoc/release/manual/plugins.xml rename to site.legacy/xdoc/release/manual/plugins.xml diff --git a/src/site/xdoc/release/manual/repositories.xml b/site.legacy/xdoc/release/manual/repositories.xml similarity index 100% rename from src/site/xdoc/release/manual/repositories.xml rename to site.legacy/xdoc/release/manual/repositories.xml diff --git a/src/site/xdoc/release/release-notes.xml b/site.legacy/xdoc/release/release-notes.xml similarity index 100% rename from src/site/xdoc/release/release-notes.xml rename to site.legacy/xdoc/release/release-notes.xml diff --git a/src/site/xdoc/release/release-review-instructions.xml b/site.legacy/xdoc/release/release-review-instructions.xml similarity index 100% rename from src/site/xdoc/release/release-review-instructions.xml rename to site.legacy/xdoc/release/release-review-instructions.xml diff --git a/src/changelog/.changelog.adoc.ftl b/src/changelog/.changelog.adoc.ftl new file mode 100644 index 000000000..e63407d19 --- /dev/null +++ b/src/changelog/.changelog.adoc.ftl @@ -0,0 +1,27 @@ +<#-- + ~ 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 + ~ + ~ http://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. + --> +<#if entriesByType?size gt 0> +<#list entriesByType as entryType, entries> + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}-${entryType?lower_case}] +=== ${entryType?capitalize} + + <#list entries as entry> + * ${entry.description.text?replace("\\s+", " ", "r")}<#if entry.issues?has_content> (<#list entry.issues as issue>${issue.link}[${issue.id}]<#if issue?has_next>, ) + + + diff --git a/src/changelog/.index.adoc.ftl b/src/changelog/.index.adoc.ftl new file mode 100644 index 000000000..c08d82f9b --- /dev/null +++ b/src/changelog/.index.adoc.ftl @@ -0,0 +1,44 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE IS CALLED `index.adoc`, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Release notes `index.adoc` is generated from `src/changelog/.index.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Edit `.index.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.index.adoc.ftl` and the generated `.index.adoc` +//// + +// Release notes index does not look nice with a deep sectioning, override it: +:page-toclevels: 1 + +[#release-notes] += Release notes +<#list releases as release><#if release.changelogEntryCount gt 0> + +include::_release-notes/${release.version}.adoc[] + \ No newline at end of file diff --git a/src/changelog/2.x/.release-notes.adoc.ftl b/src/changelog/2.x/.release-notes.adoc.ftl new file mode 100644 index 000000000..e30cd4e6e --- /dev/null +++ b/src/changelog/2.x/.release-notes.adoc.ftl @@ -0,0 +1,41 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +<#include "../.changelog.adoc.ftl"> \ No newline at end of file diff --git a/src/changelog/2.x/.release.xml b/src/changelog/2.x/.release.xml new file mode 100644 index 000000000..71f705ec9 --- /dev/null +++ b/src/changelog/2.x/.release.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/src/changelog/2.x/2.x-and-older.xml b/src/changelog/2.x/2.x-and-older.xml new file mode 100644 index 000000000..8b455e020 --- /dev/null +++ b/src/changelog/2.x/2.x-and-older.xml @@ -0,0 +1,8 @@ + + + + release notes for older releases can be found here + diff --git a/src/changelog/3.0.0/.release-notes.adoc.ftl b/src/changelog/3.0.0/.release-notes.adoc.ftl new file mode 100644 index 000000000..94b14261a --- /dev/null +++ b/src/changelog/3.0.0/.release-notes.adoc.ftl @@ -0,0 +1,98 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +[#release-notes-3-0-0-breaking-changes] +=== Breaking changes + +[IMPORTANT] +==== +Starting with 3.0.0 we only support the following target frameworks + +* net462 +* netstandard2.0 + +The reasoning for this change can be found in https://github.com/apache/logging-log4net/issues/111[#111 - Dropping support for older runtimes] +==== + +[#release-notes-3-0-0-removed-obsolete] +==== Removed obsolete classes and members + +[#release-notes-3-0-0-removed-obsolete-1.2.14] +===== since 1.2.14 (2015) + +* log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData +* log4net.Appender.ColoredConsoleAppender.ctor(ILayout) +* log4net.Appender.ColoredConsoleAppender.ctor(ILayout, bool) +* log4net.Appender.ConsoleAppender.ctor(ILayout) +* log4net.Appender.ConsoleAppender.ctor(ILayout, bool) +* log4net.Appender.DebugAppender.ctor(ILayout) +* log4net.Appender.EventLogAppender.ctor(ILayout) +* log4net.Appender.FileAppender.ctor(ILayout, string) +* log4net.Appender.FileAppender.ctor(ILayout, string, bool) +* log4net.Appender.MemoryAppender.OnlyFixPartialEventData +* log4net.Appender.SmtpAppender.LocationInfo +* log4net.Appender.TextWriterAppender.ctor(ILayout, Stream) +* log4net.Appender.TextWriterAppender.ctor(ILayout, TextWriter) +* log4net.Appender.TraceAppender.ctor(ILayout) +* log4net.Config.DOMConfigurator +* log4net.Config.AliasDomainAttribute +* log4net.Config.DomainAttribute +* log4net.Config.DOMConfiguratorAttribute +* log4net.Core.LoggerManager.GetLoggerRepository +* log4net.Core.LoggerManager.CreateDomain +* log4net.Core.LoggingEventData.TimeStamp +* log4net.Core.LoggingEvent.GetExceptionStrRep +* log4net.Core.LoggingEvent.FixVolatileData +* log4net.LogManager.GetLoggerRepository +* log4net.LogManager.CreateDomain + +[#release-notes-3-0-0-removed-obsolete-2.0.6] +===== since 2.0.6 (2016) + +* log4net.Util.SystemInfo.ProcessStartTime + +[#release-notes-3-0-0-sealed] +==== Sealed classes - the following classes are now sealed + +* log4net.Config.AliasRepositoryAttribute +* log4net.Config.RepositoryAttribute +* log4net.Config.XmlConfiguratorAttribute + +<#include "../.changelog.adoc.ftl"> \ No newline at end of file diff --git a/src/changelog/3.0.0/.release.xml b/src/changelog/3.0.0/.release.xml new file mode 100644 index 000000000..addfd973a --- /dev/null +++ b/src/changelog/3.0.0/.release.xml @@ -0,0 +1,6 @@ + + diff --git a/src/changelog/3.0.0/109-dotnet-test-run.xml b/src/changelog/3.0.0/109-dotnet-test-run.xml new file mode 100644 index 000000000..36eea1305 --- /dev/null +++ b/src/changelog/3.0.0/109-dotnet-test-run.xml @@ -0,0 +1,8 @@ + + + + Fix dotnet (ie not netfx) test run (by @mobilebilly) + \ No newline at end of file diff --git a/src/changelog/3.0.0/111-drop-legacy-runtimes.xml b/src/changelog/3.0.0/111-drop-legacy-runtimes.xml new file mode 100644 index 000000000..8a1454920 --- /dev/null +++ b/src/changelog/3.0.0/111-drop-legacy-runtimes.xml @@ -0,0 +1,9 @@ + + + + + Dropping support for older runtimes (by @fluffynuts and @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.0/124-eventlist.xml b/src/changelog/3.0.0/124-eventlist.xml new file mode 100644 index 000000000..9484d278a --- /dev/null +++ b/src/changelog/3.0.0/124-eventlist.xml @@ -0,0 +1,8 @@ + + + + log4net.Appender.MemoryAppender.m_eventsList (protected field) is now List<LoggingEvent> (instead of System.Collections.ArrayList) + \ No newline at end of file diff --git a/src/changelog/3.0.0/124-innerhashtable.xml b/src/changelog/3.0.0/124-innerhashtable.xml new file mode 100644 index 000000000..86fb605a6 --- /dev/null +++ b/src/changelog/3.0.0/124-innerhashtable.xml @@ -0,0 +1,8 @@ + + + + log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable is now Dictionary<string, object?> (instead of System.Collections.Hashtable) + \ No newline at end of file diff --git a/src/changelog/3.0.0/124-nullable-annotations.xml b/src/changelog/3.0.0/124-nullable-annotations.xml new file mode 100644 index 000000000..d69263fd1 --- /dev/null +++ b/src/changelog/3.0.0/124-nullable-annotations.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + Add support for nullable annotations (by @erikmav) + \ No newline at end of file diff --git a/src/changelog/3.0.0/125-remove-deprecated.xml b/src/changelog/3.0.0/125-remove-deprecated.xml new file mode 100644 index 000000000..47a940ab3 --- /dev/null +++ b/src/changelog/3.0.0/125-remove-deprecated.xml @@ -0,0 +1,9 @@ + + + + + Remove deprecated code for 3.0 (by @erikmav) + \ No newline at end of file diff --git a/src/changelog/3.0.0/127-add-docker.xml b/src/changelog/3.0.0/127-add-docker.xml new file mode 100644 index 000000000..06fda1cec --- /dev/null +++ b/src/changelog/3.0.0/127-add-docker.xml @@ -0,0 +1,9 @@ + + + + + Enable building log4net with docker container (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.0/154-remotingappender-removed.xml b/src/changelog/3.0.0/154-remotingappender-removed.xml new file mode 100644 index 000000000..0f7cfbc33 --- /dev/null +++ b/src/changelog/3.0.0/154-remotingappender-removed.xml @@ -0,0 +1,8 @@ + + + + log4net.Appender.RemotingAppender + \ No newline at end of file diff --git a/src/changelog/3.0.0/156-regression-logger-reverse.xml b/src/changelog/3.0.0/156-regression-logger-reverse.xml new file mode 100644 index 000000000..7fb696473 --- /dev/null +++ b/src/changelog/3.0.0/156-regression-logger-reverse.xml @@ -0,0 +1,8 @@ + + + + Regression: Creating nested loggers in reverse order fails in 3.0.0-preview.1 (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.0/157-emittednoappenderwarning-internal.xml b/src/changelog/3.0.0/157-emittednoappenderwarning-internal.xml new file mode 100644 index 000000000..322607a8b --- /dev/null +++ b/src/changelog/3.0.0/157-emittednoappenderwarning-internal.xml @@ -0,0 +1,8 @@ + + + + log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning is now internal + \ No newline at end of file diff --git a/src/changelog/3.0.0/158-netsendappender-removed.xml b/src/changelog/3.0.0/158-netsendappender-removed.xml new file mode 100644 index 000000000..a5f693c30 --- /dev/null +++ b/src/changelog/3.0.0/158-netsendappender-removed.xml @@ -0,0 +1,8 @@ + + + + log4net.Appender.NetSendAppender + \ No newline at end of file diff --git a/src/changelog/3.0.0/168-console-preamble.xml b/src/changelog/3.0.0/168-console-preamble.xml new file mode 100644 index 000000000..e22ecc98c --- /dev/null +++ b/src/changelog/3.0.0/168-console-preamble.xml @@ -0,0 +1,8 @@ + + + + ColoredConsoleAppender writes UTF-8 preamble to the console on initialization (reported by @RoboBurned, fixed by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.0/169-nullreference-compare-level.xml b/src/changelog/3.0.0/169-nullreference-compare-level.xml new file mode 100644 index 000000000..f6502b064 --- /dev/null +++ b/src/changelog/3.0.0/169-nullreference-compare-level.xml @@ -0,0 +1,8 @@ + + + + System.NullReferenceException when comparing with a null Level (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.0/175-serialization-removed.xml b/src/changelog/3.0.0/175-serialization-removed.xml new file mode 100644 index 000000000..e4d6e5083 --- /dev/null +++ b/src/changelog/3.0.0/175-serialization-removed.xml @@ -0,0 +1,8 @@ + + + + Serializable Support (for .netstandard) + \ No newline at end of file diff --git a/src/changelog/3.0.0/179-culture-rollingfileappender.xml b/src/changelog/3.0.0/179-culture-rollingfileappender.xml new file mode 100644 index 000000000..a24dc5ac3 --- /dev/null +++ b/src/changelog/3.0.0/179-culture-rollingfileappender.xml @@ -0,0 +1,8 @@ + + + + Culture-Specific String Comparisons Cause RollingFileAppender Failure in log4net on NET 5+ (reported by @stianeklund) + \ No newline at end of file diff --git a/src/changelog/3.0.1/.release-notes.adoc.ftl b/src/changelog/3.0.1/.release-notes.adoc.ftl new file mode 100644 index 000000000..e30cd4e6e --- /dev/null +++ b/src/changelog/3.0.1/.release-notes.adoc.ftl @@ -0,0 +1,41 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +<#include "../.changelog.adoc.ftl"> \ No newline at end of file diff --git a/src/changelog/3.0.1/.release.xml b/src/changelog/3.0.1/.release.xml new file mode 100644 index 000000000..c637ce9ea --- /dev/null +++ b/src/changelog/3.0.1/.release.xml @@ -0,0 +1,6 @@ + + diff --git a/src/changelog/3.0.1/176-added-source-link.xml b/src/changelog/3.0.1/176-added-source-link.xml new file mode 100644 index 000000000..19671ba6a --- /dev/null +++ b/src/changelog/3.0.1/176-added-source-link.xml @@ -0,0 +1,8 @@ + + + + added source link (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.1/177-use-managedthreadid-for-long-running-tasks.xml b/src/changelog/3.0.1/177-use-managedthreadid-for-long-running-tasks.xml new file mode 100644 index 000000000..79b5675b8 --- /dev/null +++ b/src/changelog/3.0.1/177-use-managedthreadid-for-long-running-tasks.xml @@ -0,0 +1,9 @@ + + + + use ManagedThreadId for long running tasks reported by @Audela-220, + fixed by @FreeAndNil in https://github.com/apache/logging-log4net/pull/180[#180] + diff --git a/src/changelog/3.0.1/181-automate-version-bumps.xml b/src/changelog/3.0.1/181-automate-version-bumps.xml new file mode 100644 index 000000000..b0a35b604 --- /dev/null +++ b/src/changelog/3.0.1/181-automate-version-bumps.xml @@ -0,0 +1,8 @@ + + + + automate version bumps (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.1/183-log4net.Util.PatternString-not-working-in-3.0.0.xml b/src/changelog/3.0.1/183-log4net.Util.PatternString-not-working-in-3.0.0.xml new file mode 100644 index 000000000..49054c797 --- /dev/null +++ b/src/changelog/3.0.1/183-log4net.Util.PatternString-not-working-in-3.0.0.xml @@ -0,0 +1,9 @@ + + + + log4net.Util.PatternString not working in 3.0.0 (Unable to set property [file] on object [log4net.Appender.FileAppender]), reported by @sc-mk, + fixed by @FreeAndNil in https://github.com/apache/logging-log4net/pull/184[#184] + diff --git a/src/changelog/3.0.2/.release-notes.adoc.ftl b/src/changelog/3.0.2/.release-notes.adoc.ftl new file mode 100644 index 000000000..a708d2cb7 --- /dev/null +++ b/src/changelog/3.0.2/.release-notes.adoc.ftl @@ -0,0 +1,47 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +[#release-notes-3-0-2-known-issues] +=== Known issues + +* MDC was accidentally renamed into Mdc - this will be reverted in 3.0.3 +* NDC was accidentally renamed into Ndc - this will be reverted in 3.0.3 + +<#include "../.changelog.adoc.ftl"> \ No newline at end of file diff --git a/src/changelog/3.0.2/.release.xml b/src/changelog/3.0.2/.release.xml new file mode 100644 index 000000000..b5a8a85f4 --- /dev/null +++ b/src/changelog/3.0.2/.release.xml @@ -0,0 +1,6 @@ + + diff --git a/src/changelog/3.0.2/189-separate-review-instructions.xml b/src/changelog/3.0.2/189-separate-review-instructions.xml new file mode 100644 index 000000000..deeac4631 --- /dev/null +++ b/src/changelog/3.0.2/189-separate-review-instructions.xml @@ -0,0 +1,8 @@ + + + + separate review instructions for log4net (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.2/194-objectdisposedexception-in-telnetappender.xml b/src/changelog/3.0.2/194-objectdisposedexception-in-telnetappender.xml new file mode 100644 index 000000000..214129430 --- /dev/null +++ b/src/changelog/3.0.2/194-objectdisposedexception-in-telnetappender.xml @@ -0,0 +1,9 @@ + + + + ObjectDisposedException in TelnetAppender (3.0.1) reported by @VianneyTremelo, + fixed by @FreeAndNil in https://github.com/apache/logging-log4net/pull/195[#195] + diff --git a/src/changelog/3.0.2/196-more-modern-coding-style.xml b/src/changelog/3.0.2/196-more-modern-coding-style.xml new file mode 100644 index 000000000..7dba546fa --- /dev/null +++ b/src/changelog/3.0.2/196-more-modern-coding-style.xml @@ -0,0 +1,8 @@ + + + + more modern coding style (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.2/197-indexoutfrangeexception-when-creating-child-loggers-multithreaded.xml b/src/changelog/3.0.2/197-indexoutfrangeexception-when-creating-child-loggers-multithreaded.xml new file mode 100644 index 000000000..a3b85d44d --- /dev/null +++ b/src/changelog/3.0.2/197-indexoutfrangeexception-when-creating-child-loggers-multithreaded.xml @@ -0,0 +1,9 @@ + + + + IndexOutOfRangeException when creating child loggers multithreaded, reported by @FreeAndNil, + fixed by @FreeAndNil in https://github.com/apache/logging-log4net/pull/198[#198] + diff --git a/src/changelog/3.0.3/.release-notes.adoc.ftl b/src/changelog/3.0.3/.release-notes.adoc.ftl new file mode 100644 index 000000000..85eb1e0e8 --- /dev/null +++ b/src/changelog/3.0.3/.release-notes.adoc.ftl @@ -0,0 +1,41 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +<#include "../.changelog.adoc.ftl"> diff --git a/src/changelog/3.0.3/.release.xml b/src/changelog/3.0.3/.release.xml new file mode 100644 index 000000000..32a5f023d --- /dev/null +++ b/src/changelog/3.0.3/.release.xml @@ -0,0 +1,6 @@ + + diff --git a/src/changelog/3.0.3/196-fix-mdc.xml b/src/changelog/3.0.3/196-fix-mdc.xml new file mode 100644 index 000000000..7c2e49b10 --- /dev/null +++ b/src/changelog/3.0.3/196-fix-mdc.xml @@ -0,0 +1,8 @@ + + + + MDC was accidentally renamed into Mdc in 3.0.2 - this change was reverted + diff --git a/src/changelog/3.0.3/196-fix-ndc.xml b/src/changelog/3.0.3/196-fix-ndc.xml new file mode 100644 index 000000000..550479a9f --- /dev/null +++ b/src/changelog/3.0.3/196-fix-ndc.xml @@ -0,0 +1,8 @@ + + + + NDC was accidentally renamed into Ndc in 3.0.2 - this change was reverted + diff --git a/src/changelog/3.0.3/199-fix-empty-username-linux.xml b/src/changelog/3.0.3/199-fix-empty-username-linux.xml new file mode 100644 index 000000000..ec19569d2 --- /dev/null +++ b/src/changelog/3.0.3/199-fix-empty-username-linux.xml @@ -0,0 +1,8 @@ + + + + Fix empty string received by .NET 8 users on Linux on userName (by @gdziadkiewicz) + diff --git a/src/changelog/3.0.3/200-bump-nunit.xml b/src/changelog/3.0.3/200-bump-nunit.xml new file mode 100644 index 000000000..54f0b26e7 --- /dev/null +++ b/src/changelog/3.0.3/200-bump-nunit.xml @@ -0,0 +1,8 @@ + + + + Bumped NUnit to 4.2.2 (by @FreeAndNil) + diff --git a/src/changelog/3.0.3/201-enable-ca.xml b/src/changelog/3.0.3/201-enable-ca.xml new file mode 100644 index 000000000..d0faca231 --- /dev/null +++ b/src/changelog/3.0.3/201-enable-ca.xml @@ -0,0 +1,8 @@ + + + + Enable Microsoft.CodeAnalysis.NetAnalyzers (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.3/202-file-scoped-namespaces.xml b/src/changelog/3.0.3/202-file-scoped-namespaces.xml new file mode 100644 index 000000000..888b2648b --- /dev/null +++ b/src/changelog/3.0.3/202-file-scoped-namespaces.xml @@ -0,0 +1,8 @@ + + + + file scoped namespaces and CA warnings fixed in examples (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.3/203-raw-strings-in-tests.xml b/src/changelog/3.0.3/203-raw-strings-in-tests.xml new file mode 100644 index 000000000..5d8c01940 --- /dev/null +++ b/src/changelog/3.0.3/203-raw-strings-in-tests.xml @@ -0,0 +1,8 @@ + + + + use raw strings for config files in unit tests (by @FreeAndNil) + \ No newline at end of file diff --git a/src/changelog/3.0.3/205-rolloverrenamefiles-virtual.xml b/src/changelog/3.0.3/205-rolloverrenamefiles-virtual.xml new file mode 100644 index 000000000..45ec4fc1e --- /dev/null +++ b/src/changelog/3.0.3/205-rolloverrenamefiles-virtual.xml @@ -0,0 +1,9 @@ + + + + use raw strings for config files in unit tests (reported by @FerdinandStapenhorst, + implemented by @FreeAndNil in https://github.com/apache/logging-log4net/pull/206[#206] + \ No newline at end of file diff --git a/src/changelog/3.0.4/.release-notes.adoc.ftl b/src/changelog/3.0.4/.release-notes.adoc.ftl new file mode 100644 index 000000000..85eb1e0e8 --- /dev/null +++ b/src/changelog/3.0.4/.release-notes.adoc.ftl @@ -0,0 +1,41 @@ +//// + 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 + + http://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. +//// + +//// + ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ + ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ + ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ + ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ + ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ + + IF THIS FILE DOESN'T HAVE A `.ftl` SUFFIX, IT IS AUTO-GENERATED, DO NOT EDIT IT! + + Version-specific release notes (`7.8.0.adoc`, etc.) are generated from `src/changelog/*/.release-notes.adoc.ftl`. + Auto-generation happens during `generate-sources` phase of Maven. + Hence, you must always + + 1. Find and edit the associated `.release-notes.adoc.ftl` + 2. Run `./mvnw generate-sources` + 3. Commit both `.release-notes.adoc.ftl` and the generated `7.8.0.adoc` +//// + +[#release-notes-${release.version?replace("[^a-zA-Z0-9]", "-", "r")}] +== ${release.version} + +<#if release.date?has_content>Release date:: ${release.date} + +<#include "../.changelog.adoc.ftl"> diff --git a/src/changelog/3.0.4/.release.xml b/src/changelog/3.0.4/.release.xml new file mode 100644 index 000000000..a911feae4 --- /dev/null +++ b/src/changelog/3.0.4/.release.xml @@ -0,0 +1,6 @@ + + diff --git a/src/changelog/3.0.4/106-enable-automatic-test-runs-on-commit.xml b/src/changelog/3.0.4/106-enable-automatic-test-runs-on-commit.xml new file mode 100644 index 000000000..546ab088e --- /dev/null +++ b/src/changelog/3.0.4/106-enable-automatic-test-runs-on-commit.xml @@ -0,0 +1,10 @@ + + + + + Enable automatic test runs on commit + (implemented by @gdziadkiewicz in https://github.com/apache/logging-log4net/pull/204[#204]) + diff --git a/src/changelog/3.0.4/215-keep-old-working-ubuntu-image-version.xml b/src/changelog/3.0.4/215-keep-old-working-ubuntu-image-version.xml new file mode 100644 index 000000000..9f10f3dab --- /dev/null +++ b/src/changelog/3.0.4/215-keep-old-working-ubuntu-image-version.xml @@ -0,0 +1,8 @@ + + + + Keep old, working ubuntu image version (by @gdziadkiewicz) + diff --git a/src/changelog/3.0.4/216-breaking-change-to-FileAppender-in-3.0.2.xml b/src/changelog/3.0.4/216-breaking-change-to-FileAppender-in-3.0.2.xml new file mode 100644 index 000000000..14301f76e --- /dev/null +++ b/src/changelog/3.0.4/216-breaking-change-to-FileAppender-in-3.0.2.xml @@ -0,0 +1,12 @@ + + + + + + fixed SetQWForFiles method name in FileAppender from https://github.com/apache/logging-log4net/pull/196[#196] + by @sketchturner in https://github.com/apache/logging-log4net/pull/217[#217] + (fixes https://github.com/apache/logging-log4net/issues/216[#216] reported by @sketchturner) + diff --git a/src/changelog/3.0.4/225-xmllayoutschemalog4j-changed-xml-start element-for-exceptions-since-v3.0.0.xml b/src/changelog/3.0.4/225-xmllayoutschemalog4j-changed-xml-start element-for-exceptions-since-v3.0.0.xml new file mode 100644 index 000000000..6fb8e14cf --- /dev/null +++ b/src/changelog/3.0.4/225-xmllayoutschemalog4j-changed-xml-start element-for-exceptions-since-v3.0.0.xml @@ -0,0 +1,10 @@ + + + + + XmlLayoutSchemaLog4J: Changed XML start element for exceptions since v3.0.0 + (reported by @sita-martin, fixed in https://github.com/apache/logging-log4net/pull/226[#226] by @FreeAndNil) + diff --git a/src/changelog/3.0.4/227-provide-path-of-expected-.config-file-in-error-message.xml b/src/changelog/3.0.4/227-provide-path-of-expected-.config-file-in-error-message.xml new file mode 100644 index 000000000..ce29aa90e --- /dev/null +++ b/src/changelog/3.0.4/227-provide-path-of-expected-.config-file-in-error-message.xml @@ -0,0 +1,10 @@ + + + + + Provide path of expected .config file in error message + (requested by @FrankNuessle, implemented by @FreeAndNil in https://github.com/apache/logging-log4net/pull/228[#228]) + diff --git a/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs b/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs index 2678673a2..7d5b822b2 100644 --- a/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs +++ b/src/log4net.Tests/Appender/Internal/SimpleTelnetClient.cs @@ -1,3 +1,24 @@ +/* + * + * 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 + * + * http://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. + * +*/ + using System; using System.Net; using System.Net.Sockets; diff --git a/src/log4net/Appender/AdoNetAppender.cs b/src/log4net/Appender/AdoNetAppender.cs index 436f1e12a..4453e39e2 100644 --- a/src/log4net/Appender/AdoNetAppender.cs +++ b/src/log4net/Appender/AdoNetAppender.cs @@ -66,51 +66,69 @@ namespace log4net.Appender; /// /// An example of a SQL Server table that could be logged to: /// -/// CREATE TABLE [dbo].[Log] ( -/// [ID] [int] IDENTITY (1, 1) NOT NULL , -/// [Date] [datetime] NOT NULL , -/// [Thread] [varchar] (255) NOT NULL , -/// [Level] [varchar] (20) NOT NULL , -/// [Logger] [varchar] (255) NOT NULL , -/// [Message] [varchar] (4000) NOT NULL -/// ) ON [PRIMARY] +/// create table dbo.Log +/// ( +/// Id bigint identity (1, 1) not null, +/// LogDate datetime not null, +/// Thread nvarchar(255) not null, +/// LogLevel nvarchar(50) not null, +/// Logger nvarchar(255) not null, +/// LogMessage nvarchar(2000) not null, +/// Exception nvarchar(2000) null, +/// constraint Log_PKEY primary key (Id) +/// ) with (data_compression = page) /// /// /// /// An example configuration to log to the above table: /// -/// -/// -/// -/// +/// +/// +/// +/// +/// /// -/// -/// -/// +/// +/// +/// /// /// -/// -/// -/// -/// +/// +/// +/// +/// +/// +/// /// /// -/// -/// -/// -/// +/// +/// +/// +/// +/// +/// /// /// -/// -/// -/// -/// +/// +/// +/// +/// +/// +/// /// /// -/// -/// -/// -/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// /// /// /// diff --git a/src/site/antora/antora.tmpl.yml b/src/site/antora/antora.tmpl.yml new file mode 100644 index 000000000..f57633a72 --- /dev/null +++ b/src/site/antora/antora.tmpl.yml @@ -0,0 +1,50 @@ +# +# 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 +# +# http://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. +# + +# +# ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ +# ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ +# ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ +# ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +# ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ +# +# THIS FILE IS USED AS A TEMPLATE TO AUTO-GENERATE `antora.yml`! +# +# The actual `antora.yml` that is used in `target/generated-site/antora` is auto-generated from `.antora.yml`. +# Auto-generation happens during `pre-site` phase of Maven. +# Hence, you must always +# +# 1. Edit `.antora.yml` +# 2. Edit `antora.yml` to match the fields in `.antora.yml` and fill Maven property placeholders with dummy values +# + +name: ROOT +title: Home +version: ~ +start_page: index.adoc +asciidoc: + attributes: + project-github-url: "${scm.url}" + project-version: "${project.version}" + project-name: "log4net" + project-id: "log4net" + java-target-version: "${maven.compiler.target}" + java-compiler-version: "${minimalJavaBuildVersion}" + logging-services-url: "https://logging.apache.org" + freemarker-link: "https://freemarker.apache.org[FreeMarker]" +nav: + - modules/ROOT/nav.adoc diff --git a/src/site/antora/antora.yml b/src/site/antora/antora.yml new file mode 100644 index 000000000..8b8406812 --- /dev/null +++ b/src/site/antora/antora.yml @@ -0,0 +1,50 @@ +# +# 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 +# +# http://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. +# + +# +# ██ ██ █████ ██████ ███ ██ ██ ███ ██ ██████ ██ +# ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██ ██ ██ +# ██ █ ██ ███████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ +# ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +# ███ ███ ██ ██ ██ ██ ██ ████ ██ ██ ████ ██████ ██ +# +# THIS FILE IS A STUB! +# +# The actual `antora.yml` that is used in `target/generated-site/antora` is auto-generated from `antora.tmpl.yml`. +# Auto-generation happens during `pre-site` phase of Maven. +# Hence, you must always +# +# 1. Edit `antora.tmpl.yml` +# 2. Edit `antora.yml` to match the fields in `antora.tmpl.yml` and fill Maven property placeholders with dummy values +# + +name: ROOT +title: Home +version: ~ +start_page: index.adoc +asciidoc: + attributes: + project-github-url: "https://github.com/apache/logging-log4j-tools" + project-version: "1.2.3" + project-name: "Log4j Tools" + project-id: "log4j-tools" + java-target-version: "8" + java-compiler-version: "[17,18)" + logging-services-url: "https://logging.apache.org" + freemarker-link: "https://freemarker.apache.org[FreeMarker]" +nav: + - modules/ROOT/nav.adoc diff --git a/src/site/antora/modules/ROOT/nav.adoc b/src/site/antora/modules/ROOT/nav.adoc new file mode 100644 index 000000000..8f0507514 --- /dev/null +++ b/src/site/antora/modules/ROOT/nav.adoc @@ -0,0 +1,52 @@ +//// + 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 + + http://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. +//// + +* xref:download.adoc[] +* xref:development.adoc[] +* xref:manual/index.adoc[] +** xref:manual/introduction.adoc[] +** xref:manual/appenders.adoc[] +** xref:manual/configuration.adoc[] +*** xref:manual/configuration/examples.adoc[] +**** xref:manual/configuration/adonetappender.adoc[] +**** xref:manual/configuration/bufferingforwardingappender.adoc[] +**** xref:manual/configuration/coloredconsoleappender.adoc[] +**** xref:manual/configuration/consoleappender.adoc[] +**** xref:manual/configuration/eventlogappender.adoc[] +**** xref:manual/configuration/fileappender.adoc[] +**** xref:manual/configuration/rollingfileappender.adoc[] +**** xref:manual/configuration/forwardingappender.adoc[] +**** xref:manual/configuration/localsyslogappender.adoc[] +**** xref:manual/configuration/managedcoloredconsoleappender.adoc[] +**** xref:manual/configuration/memoryappender.adoc[] +**** xref:manual/configuration/outputdebugstringappender.adoc[] +**** xref:manual/configuration/remotesyslogappender.adoc[] +**** xref:manual/configuration/smtpappender.adoc[] +**** xref:manual/configuration/smtppickupdirappender.adoc[] +**** xref:manual/configuration/traceappender.adoc[] +**** xref:manual/configuration/udpappender.adoc[] +** xref:manual/examples.adoc[] +** xref:manual/faq.adoc[] +** xref:manual/filters.adoc[] +** xref:manual/layouts.adoc[] +** xref:manual/installation.adoc[] +** xref:manual/supported-frameworks.adoc[] +* xref:features.adoc[] +* xref:release-notes.adoc[] +* xref:release-review.adoc[] +* {logging-services-url}/support.html[Support] +* {logging-services-url}/security.html[Security] diff --git a/src/site/antora/modules/ROOT/pages/development.adoc b/src/site/antora/modules/ROOT/pages/development.adoc new file mode 100644 index 000000000..67aea4bd2 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/development.adoc @@ -0,0 +1,83 @@ +//// + 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 + + http://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. +//// + +[#development] += Development + +{project-name} uses {project-github-url}[GitHub] for source code management. + +[#building] +== Building log4net + +Log4net provides support for the following targets + +* net462 +* netstandard2.0 + +[#windows] +=== Windows +* install Visual Studio Build Tools (at least VS 2022) +* install dotnet (v8+) and the .NET SDK (current latest) +* in the project folder ++ +[source,powershell] +---- +dotnet test ./src/log4net.sln +---- + +[#docker] +=== Docker +* install docker (if you haven't already) +** https://docs.docker.com/engine/install/ +* in logging/log4net run ++ +[source,bash] +---- +docker build -t log4net-builder . +docker run -it log4net-builder +---- +** this will +*** install all dependencies in the container +*** build src/log4net.sln +* inside the container run ++ +[source,bash] +---- +dotnet test /logging-log4net/src/log4net.sln +---- + +[#linux-macos] +=== Linux / MacOS +- install the dotnet SDK - v8 or better +- install Mono (you're going to need it to target certain versions of .NET) + +[#site] +== Site +You can build and view the website as follows: + +[source,bash/powershell] +---- +./mvnw -N site +---- + +You can view the generated website with a browser by pointing it to `target/site` directory. + +[#release-instructions] +== Release instructions + +{project-name} employs the CI/CD foundation provided by the {logging-services-url}/logging-parent[`logging-parent`]. +You can simply use its release instructions. diff --git a/src/site/antora/modules/ROOT/pages/download.adoc b/src/site/antora/modules/ROOT/pages/download.adoc new file mode 100644 index 000000000..9fa57ea77 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/download.adoc @@ -0,0 +1,30 @@ +//// +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. +//// + +[#download] += Download + +You can manually download all published log4net distributions, verify them, and see their licensing information by following the instructions in the https://logging.apache.org/download.html[Download page] of https://logging.apache.org[Logging Services]. + +[TIP] +==== +* Are you looking for **the log4net installation instructions**? +Proceed to xref:manual/installation.adoc[]. +* Are you looking for the list of changes associated with a particular release? +Proceed to xref:release-notes.adoc[]. +==== + diff --git a/src/site/antora/modules/ROOT/pages/features.adoc b/src/site/antora/modules/ROOT/pages/features.adoc new file mode 100644 index 000000000..ebc3521f0 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/features.adoc @@ -0,0 +1,147 @@ +//// + 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 + + http://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. +//// + +[#features] += Features + +[#overview] +== Overview +log4net is a tool to help the programmer output log statements to a variety of output targets. +In case of problems with an application, it is helpful to enable logging so that the problem can be located. +With log4net it is possible to enable logging at runtime without modifying the application binary. +The log4net package is designed so that log statements can remain in shipped code without incurring a high performance cost. +It follows that the speed of logging (or rather not logging) is crucial. + +At the same time, log output can be so voluminous that it quickly becomes overwhelming. +One of the distinctive features of log4net is the notion of hierarchical loggers. +Using these loggers it is possible to selectively control which log statements are output at arbitrary granularity. + +log4net is designed with two distinct goals in mind: speed and flexibility + +[#featurelist] +== Features +* Support for multiple frameworks +* Output to multiple logging targets +* Hierarchical logging architecture +* XML Configuration +* Dynamic Configuration +* Logging Context +* Proven architecture +* Modular and extensible design +* High performance with flexibility + +[#frameworks] +== Support for multiple frameworks +log4net has specific builds for the following frameworks: + +* .NET Core 8 or higher - using netstandard-2.0 +* Microsoft .NET Framework 4.6.2 or higher + +[#appenders] +== Output to multiple logging targets +log4net ships with the following appenders +[cols="Type,Description"] +|=== +|Type |Description + +|AdoNetAppender +|Writes logging events to a database using either prepared statements or stored procedures. + +|AnsiColorTerminalAppender +|Writes color highlighted logging events to a an ANSI terminal window. + +|AspNetTraceAppender +|Writes logging events to the ASP trace context. These can then be rendered at the end of the ASP page or on the ASP trace page. + +|ColoredConsoleAppender +|Writes color highlighted logging events to the application's Windows Console. + +|ConsoleAppender +|Writes logging events to the application's Console. +The events may go to either the standard our stream or the standard error stream. + +|DebugAppender +|Writes logging events to the .net debugger (https://web.archive.org/web/20240930165834/https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.debug?view=net-8.0[System.Diagnostics.Debug]). + +|EventLogAppender +|Writes logging events to the Windows Event Log. + +|FileAppender +|Writes logging events to a file in the file system. + +|LocalSyslogAppender +|Writes logging events to the local https://datatracker.ietf.org/doc/html/rfc3164[syslog] service (UNIX only). + +|MemoryAppender +|Stores logging events in an in memory buffer. + +|OutputDebugStringAppender +|Writes logging events to the debugger (using https://web.archive.org/web/20241118170546/https://learn.microsoft.com/en-us/windows/win32/api/debugapi/nf-debugapi-outputdebugstringw[OutputDebugString]). +If the application has no debugger, the system debugger displays the string. +If the application has no debugger and the system debugger is not active, the message is ignored. + +|RemoteSyslogAppender +|Writes logging events to a remote https://datatracker.ietf.org/doc/html/rfc3164[syslog] service using UDP networking. + +|RollingFileAppender +|Writes logging events to a file in the file system. +The RollingFileAppender can be configured to log to multiple files based upon date or file size constraints. + +|SmtpAppender +|Sends logging events to an email address. + +|SmtpPickupDirAppender +|Sends logging events to an email address but writes the emails to a configurable directory rather than sending them directly via SMTP. + +|TelnetAppender +|*Clients* connect via Telnet to receive logging events. + +|TraceAppender +|Writes logging events to the .NET trace system (https://web.archive.org/web/20240907024634/https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.trace?view=net-8.0[System.Diagnostics.Trace]). + +|UdpAppender +|Sends logging events as connectionless UDP datagrams to a remote host or a multicast group using a UdpClient. + +|ForwardingAppender +|Can be used to wrap another appender, for example to attach additional filters. + +|=== + +[#hierarchy] +== Hierarchical logging architecture +Hierarchical logging is an ideal fit with component based development. +Each component has its own of logger. +When individually tested, the properties of these loggers may be set as the developer requires. +When combined with other components, the loggers inherit the properties determined by the integrator of the components. +One can selectively elevate logging priorities on one component without affecting the other components. +This is useful when you need a detailed trace from just a single component without crowding the trace file with messages from other components. +All this can be done through configuration files - no code changes are required. + +[#xml-config] +== XML Configuration +log4net is configured using an XML configuration file. +The configuration information can be embedded within other XML configuration files (such as the application's .config file) or in a separate file. +The configuration is easily readable and updateable while retaining the flexibility to express all configurations. + +Alternatively log4net can be configured programmatically. + +[#dynamic-config] +== Dynamic Configuration +log4net can monitor its configuration file for changes and dynamically apply changes made by the configurator. +The logging levels, appenders, layouts, and just about everything else can be adjusted at runtime. +In many cases it is possible to diagnose application issues without terminating the process in question. +This can a very valuable tool in investigating issues with deployed applications. \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/index.adoc b/src/site/antora/modules/ROOT/pages/index.adoc new file mode 100644 index 000000000..1f6481746 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/index.adoc @@ -0,0 +1,22 @@ +//// +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. +//// + +[#log4net] += log4net + +The Apache log4net library is a library to output log statements to a variety of output targets. +For more information on log4net see the xref:features.adoc[] document. \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc new file mode 100644 index 000000000..3f53704d7 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc @@ -0,0 +1,167 @@ +//// + 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 + + http://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. +//// +[#appenders] += Appenders + +Appenders are responsible for delivering log events to their destination. +Every Appender must implement the `IAppender` interface. + +While not strictly required by the log4net architecture, most appenders inherit from `AppenderSkeleton` and: + +* delegate the filtering of log events to an implementation of `IFilter`. +See xref:manual/filters.adoc[] for more information. +* delegate the formatting of log events to an implementation of `ILayout`. +See xref:manual/layouts.adoc[] for more information. +* only directly handle the writing of log event data to the target destination. + +Appenders always have a name so that they can be referenced from a +xref:manual/configuration.adoc#configuring-loggers[logger configuration]. + +[#appenders-list] +== List of appenders + +log4net ships with the following appenders +[cols="Type,Description"] +|=== +|Type |Description + +|AdoNetAppender +|Writes logging events to a database using either prepared statements or stored procedures. + +|AnsiColorTerminalAppender +|Writes color highlighted logging events to a an ANSI terminal window. + +|AspNetTraceAppender +|Writes logging events to the ASP trace context. These can then be rendered at the end of the ASP page or on the ASP trace page. + +|BufferingForwardingAppender +|Buffers events and then forwards them to attached appenders. + +|ColoredConsoleAppender +|Writes color highlighted logging events to the application's Windows Console. + +|ConsoleAppender +|Writes logging events to the application's Console. +The events may go to either the standard our stream or the standard error stream. + +|DebugAppender +|Writes logging events to the .net debugger (https://web.archive.org/web/20240930165834/https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.debug?view=net-8.0[System.Diagnostics.Debug]). + +|EventLogAppender +|Writes logging events to the Windows Event Log. + +|FileAppender +|Writes logging events to a file in the file system. + +|LocalSyslogAppender +|Writes logging events to the local https://datatracker.ietf.org/doc/html/rfc3164[syslog] service (UNIX only). + +|MemoryAppender +|Stores logging events in an in memory buffer. + +|OutputDebugStringAppender +|Writes logging events to the debugger (using https://web.archive.org/web/20241118170546/https://learn.microsoft.com/en-us/windows/win32/api/debugapi/nf-debugapi-outputdebugstringw[OutputDebugString]). +If the application has no debugger, the system debugger displays the string. +If the application has no debugger and the system debugger is not active, the message is ignored. + +|RemoteSyslogAppender +|Writes logging events to a remote https://datatracker.ietf.org/doc/html/rfc3164[syslog] service using UDP networking. + +|RollingFileAppender +|Writes logging events to a file in the file system. +The RollingFileAppender can be configured to log to multiple files based upon date or file size constraints. + +|SmtpAppender +|Sends logging events to an email address. + +|SmtpPickupDirAppender +|Sends logging events to an email address but writes the emails to a configurable directory rather than sending them directly via SMTP. + +|TelnetAppender +|*Clients* connect via Telnet to receive logging events. + +|TraceAppender +|Writes logging events to the .NET trace system (https://web.archive.org/web/20240907024634/https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.trace?view=net-8.0[System.Diagnostics.Trace]). + +|UdpAppender +|Sends logging events as connectionless UDP datagrams to a remote host or a multicast group using a UdpClient. + +|ForwardingAppender +|Can be used to wrap another appender, for example to attach additional filters. + +|=== + +[#appender-additivity] +== Appender Additivity + +A logger can have multiple appenders. + +Each enabled logging request is passed to all appenders attached to that logger, and also to appenders higher in the logger hierarchy. +This behavior is called *appender additivity* and is enabled by default. + +For example, if a console appender is attached to the root logger, all enabled logs will at least print to the console. +If a file appender is added to logger `X`, logs from `X` and its children will go to both the file and the console. + +Additivity can be disabled by setting a logger’s `additivity` flag to `false`. +This prevents logging events from being passed to ancestor appenders beyond that point. + +[NOTE] +==== +If the `Animals` logger has `additivity = false`, then the `Animals.Carnivora` logger will only send its log messages to its own appenders and to `Animals`’ appenders— +but not to any appenders higher up in the hierarchy, such as those on the root logger. +==== + +[cols="Logger Name,Added Appender,Additivity Flag,Output Targets,Comment"] +|=== +|Logger Name |Added Appenders |Additivity Flag |Output Targets |Comment + +|root +|ConsoleAppender +|not applicable +|ConsoleAppender +|Default appender at the root. + +|Animals +|FileAppender, RollingFileAppender +|true +|ConsoleAppender, FileAppender, RollingFileAppender +|Appenders of "Animals" and root. + +|Animals.Carnivora +|none +|true +|ConsoleAppender, FileAppender, RollingFileAppender +|Inherited from "Animals" and root. + +|Animals.Carnivora.Felidae +|SmtpAppender +|true +|ConsoleAppender, FileAppender, RollingFileAppender, SmtpAppender +|Appenders in "Animals.Carnivora.Felidae", "Animals", and root. + +|Security +|UdpAppender +|false +|UdpAppender +|No appender accumulation because additivity is set to false. + +|Security.Access +|none +|true +|UdpAppender +|Only appenders of "Security" are used due to disabled additivity in "Security". +|=== \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc new file mode 100644 index 000000000..ccb1c9bc1 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc @@ -0,0 +1,904 @@ +//// + 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 + + http://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. +//// + +[#configuration] += Configuration + +The recommended way to configure log4net is through a configuration file. +This section explains the structure of a configuration file and how log4net processes it. + +[source,csharp] +---- +using Animals.Carnivora; +// Import log4net classes. +using log4net; +using log4net.Config; + +namespace SampleApp; + +private static class MyApp +{ + // Define a static logger variable so that it references the Logger instance named "MyApp". + private static readonly ILog logger = LogManager.GetLogger(typeof(MyApp)); + + private static void Main(string[] args) + { + // Set up a simple configuration that logs on the console. + BasicConfigurator.Configure(); + + logger.Info("Entering application."); + Dog dog = new(); + bar.Bark(); + logger.Info("Exiting application."); + } +} +---- + +MyApp starts by importing the necessary log4net namespaces. +It then declares a static logger for the type `MyApp`. + +MyApp uses the following Dog class: + +[source,csharp] +---- + +// Import log4net classes +using log4net; + +namespace Animals.Carnivora; + +internal sealed class Dog +{ + private static readonly ILog logger = LogManager.GetLogger(typeof(Dog)); + + internal void Bark() => logger.Debug("Woof!"); +} +---- + +Calling `BasicConfigurator.Configure()` sets up a simple log4net configuration. +This method automatically adds a `ConsoleAppender` to the root logger, +formatting the output using a `PatternLayout` with the following pattern: + +[source,log] +---- +%timestamp [%thread] %level %logger - %message%newline +---- + +Note that by default, the root logger is assigned to Level.DEBUG. + +The output of MyApp is: + +[source,log] +---- +2024-12-21 14:07:41,508 [main] INFO SampleApp.MyApp - Entering application. +2024-12-21 14:07:41,517 [main] DEBUG Animals.Carnivora.Dog - Woof! +2024-12-21 14:07:41,529 [main] INFO SampleApp.MyApp - Exiting application. +---- + +In log4net, child loggers link only to existing ancestors. +For example, the logger `Animals.Carnivora.Dog` is directly linked to the root logger, +bypassing the unused `Animals` and `Animals.Carnivora` loggers. +This improves performance and reduces log4net’s memory footprint. + +The `MyApp` class configures log4net by calling `BasicConfigurator.Configure()`. +Other classes simply need to import the log4net namespace, retrieve the desired loggers, and start logging. + +The previous example always produces the same log output. +However, `MyApp` can be modified to allow runtime control over log output. +Here’s an improved version: + +[source,csharp] +---- +using Animals.Carnivora; +// Import log4net classes. +using log4net; +using log4net.Config; + +namespace SampleApp; + +private static class MyApp +{ + private static readonly ILog logger = LogManager.GetLogger(typeof(MyApp)); + + private static void Main(string[] args) + { + // BasicConfigurator replaced with XmlConfigurator. + XmlConfigurator.Configure(); + + logger.Info("Entering application."); + Dog dog = new(); + bar.Bark(); + logger.Info("Exiting application."); + } +} +---- + +In this version, `MyApp` uses `XmlConfigurator` to load a configuration file and set up logging accordingly. + +The following sample configuration file produces the same output as the previous `BasicConfigurator` example: + +[source,xml] +---- + + + + + + + + + + + + + + +---- + +If we want to suppress logging for all components in the `Animals.Carnivora` namespace, +we can achieve this with the following configuration file: + +[source,xml] +---- + + + + + + + + + + + + + + + + + + +---- + +The output of MyApp configured with this file is shown below. + +[source,log] +---- +2024-12-21 14:07:41,508 [main] INFO SampleApp.MyApp - Entering application. +2024-12-21 14:07:41,529 [main] INFO SampleApp.MyApp - Exiting application. +---- + +Since the `Animals.Carnivora.Dog` logger does not have a specific level assigned, +it inherits the `WARN` level from `Animals.Carnivora`, as set in the configuration file. + +The log statement in `Dog.Bark()` is at the `DEBUG` level, which is lower than `WARN`. +As a result, the log request from `Bark()` is suppressed. + +Below is another configuration file that uses multiple appenders: + +[source,xml] +---- + + + + + + + + + + + + + + + + + + + + + + + +---- + +Calling the enhanced MyApp with the this configuration file will output the following on the console. + +[source,log] +---- +INFO [main] (MyApp.cs:17) - Entering application. +DEBUG [main] (Dog.cs:10) - Woof! +INFO [main] (MyApp.cs:20) - Exiting application. +---- + +Additionally, since the root logger has a second appender, the output is also written to `example.log`. +This file rolls over once it reaches 100KB, moving the old log to `example.log.1`. + +Notably, achieving these different logging behaviors required no code recompilation. +We could just as easily log to an email address or redirect all `Animals.Carnivora` output +to a remote syslog server. + +For more examples of configuring appenders with `XmlConfigurator`, see +xref:manual/configuration/examples.adoc[]. + +[#configuration-attributes] +== Configuration Attributes + +log4net can be configured using assembly-level attributes instead of setting it up programmatically. + +[#xml-configurator-attribute] +=== XmlConfiguratorAttribute + +The `log4net.Config.XmlConfiguratorAttribute` allows log4net to be configured using the following properties: + +ConfigFile:: + +Specifies the filename of the configuration file to use with the `XmlConfigurator`. +The file path is relative to the application base directory (`AppDomain.CurrentDomain.BaseDirectory`). +This property cannot be used with the `ConfigFileExtension` property. + +ConfigFileExtension:: + +Specifies the extension for the configuration file. +The assembly filename is used as the base name, with this extension appended. +For example, if the assembly is `TestApp.exe` and the `ConfigFileExtension` is set to `log4net`, the configuration file will be `TestApp.dll.log4net`. +This is equivalent to setting the `ConfigFile` property to `TestApp.dll.log4net`. +The path to the configuration file is built using the application base directory (`AppDomain.CurrentDomain.BaseDirectory`), the assembly file name, and the configuration file extension. +This property cannot be used with the `ConfigFile` property. + +Watch:: + +If set to `true`, this flag will enable the framework to monitor the configuration file and automatically reload it when the file is modified. + +If neither the `ConfigFile` nor the `ConfigFileExtension` properties are specified, the application configuration file (e.g., `TestApp.dll.config`) will be used as the log4net configuration file. + +Example usage: +[source,csharp] +---- +// Configure log4net using the .config file +[assembly: log4net.Config.XmlConfigurator(Watch = true)] +// This will cause log4net to look for a configuration file +// called TestApp.dll.config in the application base +// directory (i.e. the directory containing TestApp.exe) +// The config file will be watched for changes. +---- +[source,csharp] +---- +// Configure log4net using the .log4net file +[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "log4net", Watch = true)] +// This will cause log4net to look for a configuration file +// called TestApp.dll.log4net in the application base +// directory (i.e. the directory containing TestApp.exe) +// The config file will be watched for changes. +---- + +This attribute may only be used once per assembly. + +Using attributes can be a clearer method for defining where the application's configuration will be loaded from. +However, note that attributes are passive — they only provide information. +Therefore, to trigger log4net to read and process the attributes, you must invoke log4net. +A simple call to `LogManager.GetLogger` will cause the attributes on the calling assembly to be processed. + +*It is crucial to make a logging call as early as possible during the application startup, and certainly before any external assemblies are loaded and invoked.* + +[#appsettings] +== AppSettings + +If you use xref:#configuration-attributes[attributes] to configure log4net, two settings in the appSettings section of your application's configuration file can override the values specified in your assembly's attributes. + +The setting with the key `log4net.Config` overrides the configuration file name (relative to your application's base directory), while the setting with the key `log4net.Config.Watch` determines whether the configuration file should be monitored for changes. + +For example, even though the assembly attribute: + +[source,csharp] +---- +[assembly: log4net.Config.XmlConfigurator(Watch = false)] +---- + +configures your application to use the "TestApp.dll.config" file and not monitor it for changes, you can override this to use the "log4net.config" file and monitor it for changes by adding the following to your application's configuration file: + +[source,xml] +---- + + + + +---- + +to your application's configuration file. + +[#configuration-files] +== Configuration Files + +Typically the log4net configuration is specified using a file. +This file can be read in one of two ways: + +* Using the System.Configuration API +* Reading the file contents directly + +[#config-files] +=== .config Files + +The `System.Configuration` API can only be used if the configuration data is stored in the application's config file (e.g. `MyApp.dll.config`, `MyApp.exe.config`, or `Web.config`). + +The `System.Configuration` API does not support reloading the config file. +This means that the configuration settings cannot be watched using the `log4net.Config.XmlConfigurator.ConfigureAndWatch` methods. + +To configure an application using the `System.Configuration` API, you must call one of the following methods: +* `log4net.Config.XmlConfigurator.Configure()` +* `log4net.Config.XmlConfigurator.Configure(ILoggerRepository)` + +To embed the configuration data in the `.config` file, you must define the `log4net` section in the `configSections` element. +The section must specify the `log4net.Config.Log4NetConfigurationSectionHandler, log4net` type. + + +The following is a simple example configuration file that specifies the correct section handler to use for the `log4net` section. + + +[source,xml] +---- + + +
+ + + + + + + + + + + + + +---- + +[#reading-files-directly] +=== Reading Files Directly + +The `XmlConfigurator` can directly read any XML file and use it to configure log4net. +This includes the application's `.config` file (e.g. `MyApp.dll.config`, `MyApp.exe.config`, or `Web.config`). + +You can specify the configuration file using `log4net.Config.XmlConfigurator` methods that accept a `System.IO.FileInfo` object. +To auto-reconfigure on changes, use `ConfigureAndWatch`, which monitors the file for updates. + +Additionally, the `log4net.Config.XmlConfiguratorAttribute` can be used to specify the file to read the configuration from. + +The configuration is read from the `log4net` element in the file. +Only one `log4net` element can be specified in the file, but it may be located anywhere in the `XML` hierarchy. + +For example, it may be the root element: + +[source,xml] +---- + + + + + + + + + + + +---- + +Or it may be nested within other elements: + +[source,xml] +---- + + +
+ + + + + + + + + + + + + +---- + +The example shows how to embed configuration data in a .config file while allowing log4net to read it directly. +Since the .NET config parser throws errors for unregistered elements, the `log4net` section is registered using `System.Configuration.IgnoreSectionHandler`. +This tells .NET to ignore the section, as it will be processed by log4net instead. + +[#configuration-syntax] +== Configuration Syntax + +log4net provides an XML-based configuration reader, `log4net.Config.XmlConfigurator`. +This section outlines the syntax accepted by the configurator. + +A valid XML configuration must have `` as the root element. +However, this element can be embedded in another XML document. +For details on embedding XML configurations in a file, see the section on <>. + +[source,xml] +---- + + + + + + + + + + + +---- + +The `` element supports the following attributes: + +[cols="Attribute,Required,Allowed values,Default,Description"] +|=== +| Attribute | Required | Allowed values | Default | Description + +| debug +| no +| true or false +| false +| Set this attribute to true to enable internal log4net debugging for this configuration. + +| update +| no +| Merge or Overwrite +| Merge +| Set this attribute to `Overwrite` to reset the configuration of the repository being configured before applying this configuration. + +| threshold +| no +| Level (e.g. DEBUG, INFO, WARN, ERROR) +| ALL +| Set this attribute to limit the messages that are logged across the whole repository, regardless of the logger that the message is logged to. + +|=== + +The `` element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +| Element | Cardinality | Description + +| appender +| 0..* +| Defines an appender. + +| logger +| 0..* +| Defines the configuration of a logger. + +| renderer +| 0..* +| Defines an object renderer. + +| root +| 0..1 +| Defines the configuration of the root logger. + +| param +| 0..* +| Repository-specific parameters. + +|=== + +[#appenders] +== Appenders + +Appenders must be defined as child elements of the `` element. +Each appender requires a unique name and a specified implementing type. + +The following example defines an appender of type `log4net.Appender.ConsoleAppender`, named `ConsoleAppender`. + +[source,xml] +---- + + + + + +---- + +The `` element supports the following attributes: + +[cols="Attribute,Required,Allowed values,Description"] +|=== +| Attribute | Required | Allowed values | Description + +| name +| yes +| A unique string name +| Used by the `` element of a Logger to reference an appender. + +| type +| yes +| A fully qualified type name +| If the appender is not in the log4net assembly, the type name must be fully assembly qualified. + +|=== + +The `` element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +| Element | Cardinality | Description + +| appender-ref +| 0..* +| Allows the appender to reference other appenders. Not supported by all appenders. + +| filter +| 0..* +| Defines the filters used by this appender. + +| layout +| 0..1 +| Defines the layout used by this appender. + +| param +| 0..* +| Appender-specific parameters. + +|=== + +For examples of configuring appenders see xref:manual/configuration/examples.adoc[Example Appender Configuration]. + +[#filters] +== Filters + +Filter elements may only be defined as children of `` elements. + +The `` element supports the following attributes: + +[cols="Attribute,Required,Allowed values,Description"] +|=== +|Attribute |Required |Allowed values |Description + +|type +|yes +|Value must be the type name for this filter. +|If the filter is not defined in the log4net assembly, this type name must be fully assembly qualified. + +|=== + +The `` element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +|Element |Cardinality |Description + +|param +|0..* +|Filter-specific parameters. + +|=== + +Filters form a chain that the event must pass through. +Each filter can either: + +* Accept the event and stop processing. +* Deny the event and stop processing. +* Pass the event to the next filter. + +If no filter denies the event, it is implicitly accepted and logged. + +[source,xml] +---- + + + + +---- + +This filter denies events with a level lower than INFO or higher than FATAL. +Only events between INFO and FATAL are logged. + +To allow only messages containing a specific substring (e.g., 'database'), the following filters must be specified: + +[source,xml] +---- + + + + +---- + +The first filter checks if the message text contains the substring 'database'. +* If found, the filter accepts the message, stops processing, and logs the event. +* If not found, the event moves to the next filter. + +If there is no next filter, the event would be implicitly accepted and logged. +To prevent logging non-matching events, a `log4net.Filter.DenyAllFilter` must be used at the end of the filter chain. +This filter ensures that all unmatched events are denied. + +To allow events containing either 'database' or 'ldap', use the following filters: + +[source,xml] +---- + + + + + + + +---- + +[#layouts] +== Layouts + +Layout elements may only be defined as children of `` elements. + +The `` element supports the following attributes: + +[cols="Attribute,Required,Allowed values,Description"] +|=== +|Attribute |Required |Allowed values |Description + +|type +|yes +|Value must be the type name for this layout. +|If the layout is not defined in the log4net assembly, this type name must be fully assembly qualified. + +|=== + +The `` element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +|Element |Cardinality |Description + +|param +|0..* +|Layout-specific parameters. + +|=== + +This example shows how to configure a layout using `log4net.Layout.PatternLayout`. + +[source,xml] +---- + + + +---- + +[#root-logger] +== Root Logger + +Only one `root` logger element may be defined, and it must be a child of the `log4net` element. +The root logger is the root of the logger hierarchy. +All loggers ultimately inherit from this logger. + +An example root logger: + +[source,xml] +---- + + + + +---- + +The element supports no attributes. + +The element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +|Element |Cardinality |Description + +|appender-ref +|0..* +|Allows the logger to reference appenders by name. + +|level +|0..1 +|Defines the logging level for this logger. This logger will only accept event that are at this level or above. + +|param +|0..* +|Logger specific parameters + +|=== + +[#loggers] +== Loggers + +Logger elements may only be defined as children of the element. + +An example logger: + +[source,xml] +---- + + + + +---- + +The element supports the following attributes. + +[cols="Attribute,Required,Allowed values,Default,Description"] +|=== +|Attribute |Required |Allowed values |Default |Description + +|name +|yes +|any logger name +| +|Value must be the name of the logger. + +|additivity +|no +|true or false +|true +|Set this attribute to false to prevent this logger from inheriting the appenders defined on parent loggers. + +|=== + +The element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +|Element |Cardinality |Description + +|appender-ref +|0..* +|Allows the logger to reference appenders by name. + +|level +|0..1 +|Defines the logging level for this logger. This logger will only accept events that are at this level or above. + +|param +|0..* +|Logger specific parameters + +|=== + +[#renderers] +== Renderers + +Renderer elements may only be defined as children of the element. + +An example renderer: + +[source,xml] +---- + +---- + +The element supports the following attributes. + +[cols="Attribute,Required,Allowed values,Description"] +|=== +|Attribute |Required |Allowed values |Description + +|renderingClass +|yes +|Value must be the type name for this renderer. +If the type is not defined in the log4net assembly this type name must be fully assembly qualified. +|This is the type of the object that will take responsibility for rendering the renderedClass. + +|renderedClass +|yes +|Value must be the type name for the target type for this renderer. +If the type is not defined in the log4net assembly this type name must be fully assembly qualified. +|This is the name of the type that this renderer will render. + +|=== + +The element supports no child elements. + +[#parameters] +== Parameters + +Parameter elements may be children of many elements. See the specific elements above for details. + +An example param: + +[source,xml] +---- + +---- + +The element supports the following attributes. + +[cols="Attribute,Required,Allowed values,Description"] +|=== +|Attribute |Required |Allowed values |Description + +|name +|yes +|Value must be the name of the parameter to set on the parent object. +| + +|value +|no + +(One of value or type attributes must be specified.) +|The value of this attribute is a string that can be converted to the value of the parameter. +| + +|type +|no + +(One of value or type attributes must be specified.) +|The value of this attribute is a type name to create and set as the value of the parameter. +|If the type is not defined in the log4net assembly this type name must be fully assembly qualified. + +|=== + +The element supports the following child elements: + +[cols="Element,Cardinality,Description"] +|=== +|Element |Cardinality |Description + +|param +|0..* +|Parameter specific parameters +|=== + +An example param that uses nested param elements: + +[source,xml] +---- + + + +---- + +[#extension-parameters] +== Extension Parameters + +Configuration parameters map directly to writable properties on an object. +The properties available depend on the actual type of the object being configured. + +For 3rd party components please see their relevant API reference for details of the properties available. + +[#compact-parameter-syntax] +== Compact Parameter Syntax + +All parameters may alternately be specified using the parameter name as the element name rather than using the param element and name attribute. + +For example a param: + +[source,xml] +---- + + + +---- + +may be written as: + +[source,xml] +---- + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/adonetappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/adonetappender.adoc new file mode 100644 index 000000000..472b3c696 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/adonetappender.adoc @@ -0,0 +1,289 @@ +//// + 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 + + http://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. +//// + +[#adonetappender] += AdoNetAppender + +The `AdoNetAppender` is used to log events directly to a database table. +It writes log events in batches (with a default size of 100, controlled by the `BufferSize` setting). + +The configuration of `AdoNetAppender` depends on the database provider you're using. +Here are the key configuration elements: + +* `ConnectionType`: Specifies the fully qualified type name for the `System.Data.IDbConnection` used to connect to the database. +* `ConnectionString`: The connection string that is specific to the database provider (e.g., SQL Server, MySQL). +* `CommandText`: Defines the SQL command to execute. This can either be a prepared statement or a stored procedure. In the examples below, a prepared statement is used. + +Each parameter in the prepared statement or stored procedure is defined with: + +* `Name`: The name of the parameter. +* `DbType`: The database type for the parameter. +* `Layout`: The layout used to render the value for the parameter. + +The following examples illustrate how to configure the `AdoNetAppender` for different databases. + +[#mssqlserver] +== MS SQL Server + +The database table definition is: + +[source,sql] +---- +create table dbo.Log +( + Id bigint identity (1, 1) not null, + LogDate datetime not null, + Thread nvarchar(255) not null, + LogLevel nvarchar(50) not null, + Logger nvarchar(255) not null, + LogMessage nvarchar(2000) not null, + Exception nvarchar(2000) null, + constraint Log_PKEY primary key (Id) +) with (data_compression = page) +---- + +Please add a package reference for the SqlClient to your .csproj file +[source,xml] +---- + +---- + +The appender configuration is: + +[source,xml] +---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +---- + +[#oracle] +== Oracle + +Please add a package reference for the SqlClient to your .csproj file +[source,xml] +---- + +---- + +The database table definition is: + +[source,sql] +---- +create table Log +( + Id number(10) generated by default as identity, + LogDate date not null, + Thread varchar2(255) not null, + LogLevel varchar2(50) not null, + Logger varchar2(255) not null, + LogMessage varchar2(2000) not null, + Exception varchar2(2000) null, + constraint Log_PKEY primary key (Id) +) +---- + +The appender configuration is: + +[source,xml] +---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +---- + +[#postgresql] +== PostgreSQL + +The database table definition is: + +[source,sql] +---- +create table Log +( + Id bigint generated by default as identity, + LogDate date not null, + Thread varchar(255) not null, + LogLevel varchar(50) not null, + Logger varchar(255) not null, + LogMessage varchar(2000) not null, + Exception varchar(2000) null, + constraint Log_PKEY primary key (Id) +) +---- + +Please add a package reference for the SqlClient to your .csproj file +[source,xml] +---- + +---- + +The appender configuration is: + +[source,xml] +---- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +---- + +[#other-databases] +== Other databases + +To adapt the provided examples for use with other databases, follow these steps: + +* Find a NuGet package that provides the necessary ADO.NET provider for your database. +* Modify the `CREATE TABLE` script to match the data types used by your database. +* Update the `ConnectionType` property in the `AdoNetAppender` configuration to reference the connection type from the selected NuGet package. diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/bufferingforwardingappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/bufferingforwardingappender.adoc new file mode 100644 index 000000000..6775c917f --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/bufferingforwardingappender.adoc @@ -0,0 +1,59 @@ +//// + 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 + + http://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. +//// + +[#bufferingforwardingappender] += BufferingForwardingAppender + +The `BufferingForwardingAppender` buffers log events in memory before forwarding them to another appender. +This helps improve performance by reducing the number of writes to the destination appender, especially in high-volume logging scenarios. +Once the buffer reaches a specified size or time threshold, the events are forwarded to the target appender in a batch. + +The following example shows how to configure the `BufferingForwardingAppender` to buffer 100 messages before delivering them to the `ConsoleAppender`. + +[source,xml] +---- + + + + + + +---- + +This example shows how to deliver only significant events. + +A LevelEvaluator is specified with a threshold of WARN. +This means that the events will only be delivered when a message with level of WARN or higher level is logged. + +Up to 512 `bufferSize` previous messages of any level will also be delivered to provide context information. +Messages not sent will be discarded. + +[source,xml] +---- + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/coloredconsoleappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/coloredconsoleappender.adoc new file mode 100644 index 000000000..0185185cb --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/coloredconsoleappender.adoc @@ -0,0 +1,57 @@ +//// + 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 + + http://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. +//// + +[#coloredconsoleappender] += ColoredConsoleAppender + +The `ColoredConsoleAppender` writes log messages to the console with color coding based on log levels. +It allows configurable colors for each log level, making it easier to identify log severity. + +The following example shows how to configure the ColoredConsoleAppender to log messages to the console. +This example shows how to highlight error messages. + +[source,xml] +---- + + + + + + + + + +---- + +This example shows how to colorize multiple levels. + +[source,xml] +---- + + + + + + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/consoleappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/consoleappender.adoc new file mode 100644 index 000000000..eab648f97 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/consoleappender.adoc @@ -0,0 +1,46 @@ +//// + 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 + + http://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. +//// + +[#consoleappender] += ConsoleAppender + +The `ConsoleAppender` writes log messages to the console. +It outputs messages without color coding, making it simple and suitable for basic logging needs. + +The following example shows how to configure the `ConsoleAppender` to log messages to the console. +By default the messages are sent to the console standard output stream. + +[source,xml] +---- + + + + + +---- + +This example shows how to direct the log messages to the console error stream. + +[source,xml] +---- + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/eventlogappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/eventlogappender.adoc new file mode 100644 index 000000000..e90cb3395 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/eventlogappender.adoc @@ -0,0 +1,45 @@ +//// + 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 + + http://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. +//// + +[#eventlogappender] += EventLogAppender + +The EventLogAppender in log4net logs messages to the Windows Event Log. +It is limited to .Net 4.x because it is Windows specific and .netstandard lacks support for writing to the Event Log. + +The following example shows how to configure the `EventLogAppender` to log to the Application event log on the local machine using the event Source of the AppDomain.FriendlyName. + +[source,xml] +---- + + + + + +---- + +This example shows how to configure the `EventLogAppender` to use a specific event Source. + +[source,xml] +---- + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/examples.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/examples.adoc new file mode 100644 index 000000000..a11a9bd5e --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/examples.adoc @@ -0,0 +1,41 @@ +//// + 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 + + http://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. +//// + +[#examples] += Examples + +This document presents example configurations for the built-in appenders. These configurations are designed to work with the log4net.Config.XmlConfigurator. + +These examples are by no means exhaustive configurations for the appenders. + +* xref:manual/configuration/adonetappender.adoc[] +* xref:manual/configuration/bufferingforwardingappender.adoc[] +* xref:manual/configuration/coloredconsoleappender.adoc[] +* xref:manual/configuration/consoleappender.adoc[] +* xref:manual/configuration/eventlogappender.adoc[] +* xref:manual/configuration/fileappender.adoc[] +* xref:manual/configuration/rollingfileappender.adoc[] +* xref:manual/configuration/forwardingappender.adoc[] +* xref:manual/configuration/localsyslogappender.adoc[] +* xref:manual/configuration/managedcoloredconsoleappender.adoc[] +* xref:manual/configuration/memoryappender.adoc[] +* xref:manual/configuration/outputdebugstringappender.adoc[] +* xref:manual/configuration/remotesyslogappender.adoc[] +* xref:manual/configuration/smtpappender.adoc[] +* xref:manual/configuration/smtppickupdirappender.adoc[] +* xref:manual/configuration/traceappender.adoc[] +* xref:manual/configuration/udpappender.adoc[] diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/fileappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/fileappender.adoc new file mode 100644 index 000000000..e05d8d3ef --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/fileappender.adoc @@ -0,0 +1,66 @@ +//// + 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 + + http://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. +//// + +[#fileappender] += FileAppender + +The `FileAppender` writes log messages to a specified file. +It can append to existing files or overwrite them, depending on the configuration. + +The following example shows how to configure the `FileAppender` to write messages to a file. +The file specified is MyApp.log. +The file will be appended to rather than overwritten each time the logging process starts. + +[source,xml] +---- + + + + + + + +---- + +This example shows how to configure the file name to write to using an environment variable TEMP. +The encoding to use to write to the file is also specified. + +[source,xml] +---- + + + + + + + + +---- + +This example shows how to configure the appender to use the minimal locking model that allows multiple processes to write to the same file. + +[source,xml] +---- + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/forwardingappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/forwardingappender.adoc new file mode 100644 index 000000000..2239c0654 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/forwardingappender.adoc @@ -0,0 +1,35 @@ +//// + 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 + + http://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. +//// + +[#forwardingappender] += ForwardingAppender + +The `ForwardingAppender` forwards log messages to another appender. +This appender is used only in special circumstances. + +The following example shows how to configure the `ForwardingAppender`. +The forwarding appender allows a set of constraints to be used to decorate an appender. + +In this example the `ConsoleAppender` is decorated with a Threshold of level WARN. This means that an event directed to the `ConsoleAppender` directly will be logged regardless of its level, but an event directed to the `ForwardingAppender` will only be passed on to the `ConsoleAppender` if its level is WARN or higher. + +[source,xml] +---- + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/localsyslogappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/localsyslogappender.adoc new file mode 100644 index 000000000..07459e967 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/localsyslogappender.adoc @@ -0,0 +1,52 @@ +//// + 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 + + http://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. +//// + +[#localsyslogappender] += LocalSyslogAppender + +`LocalSyslogAppender` writes messages to the local syslog service on Unix-like operating systems. +It uses the system's native syslog daemon and does not support remote logging. + +The following example shows how to configure the `LocalSyslogAppender`. +It sends all events with Level WARN or higher. + +[source,xml] +---- + + + + + + +---- + +You can also specify: + +* Facility (default: user) +* Identity (default: application name) + +[source,xml] +---- + + Alert + + + + MyApp-Canary + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/managedcoloredconsoleappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/managedcoloredconsoleappender.adoc new file mode 100644 index 000000000..cac5324f2 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/managedcoloredconsoleappender.adoc @@ -0,0 +1,68 @@ +//// + 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 + + http://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. +//// + +[#managedcoloredconsoleappender] += ManagedColoredConsoleAppender + +The `ManagedColoredConsoleAppender` writes log messages to the console with colored output. +It provides more control over the colors used for different log levels. + +The following example shows how to configure the `ManagedColoredConsoleAppender` to log messages to the console. +By default the messages are sent to the console standard output stream. + +This example shows how to highlight error messages. + +[source,xml] +---- + + + + + + + + + + +---- + +This example shows how to colorize multiple levels. + +[source,xml] +---- + + + + + + + + + + + + + + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/memoryappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/memoryappender.adoc new file mode 100644 index 000000000..007079d09 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/memoryappender.adoc @@ -0,0 +1,31 @@ +//// + 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 + + http://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. +//// + +[#memoryappender] += MemoryAppender + +The `MemoryAppender` stores log events in memory rather than writing them to a file or console. +It is useful for in-memory logging and can be configured to store events until the application is stopped or the memory is cleared. + +It is unlikely that the `MemoryAppender` will be configured using a config file, but if you want to do it here's how. + +[source,xml] +---- + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/outputdebugstringappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/outputdebugstringappender.adoc new file mode 100644 index 000000000..ba15f2260 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/outputdebugstringappender.adoc @@ -0,0 +1,33 @@ +//// + 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 + + http://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. +//// + +[#outputdebugstringappender] += OutputDebugStringAppender + +The `OutputDebugStringAppender` writes log events to the Windows debugger via the `OutputDebugString` function. +This is useful for debugging and monitoring an application without writing to files or consoles. + +The following example shows how to configure the `OutputDebugStringAppender` to write logging messages to the `OutputDebugString` API. + +[source,xml] +---- + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/remotesyslogappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/remotesyslogappender.adoc new file mode 100644 index 000000000..ab61e51b9 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/remotesyslogappender.adoc @@ -0,0 +1,88 @@ +//// + 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 + + http://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. +//// + +[#remotesyslogappender] += RemoteSyslogAppender + +The `RemoteSyslogAppender` sends log messages to a remote syslog daemon using the BSD syslog protocol over UDP (default port 514). +It supports configurable syslog facilities and severity levels, but due to the nature of UDP, messages may be lost or truncated. + +This appender does not include timestamp or hostname fields, as the receiving syslog daemon adds them automatically. +It also splits log messages at line breaks, sending each line as a separate syslog message. + +The following example sends all events with Level WARN or higher to the remote server 192.168.1.100 on the default port with UTF8-Encoding. + +[source,xml] +---- + + UTF-8 + + + + + + +---- + +You can also specify: + +* Facility (default: user) +* Identity (default: application name) + +[source,xml] +---- + + UTF-8 + Alert + + + + MyApp-Canary + + + +---- + +If your log message contains multiple lines, it will be logged as multiple separate syslog entries instead of a single multiline message. + +This might lead to confusion when analyzing logs because related lines could appear interleaved with logs from other sources. + +Example: + +[source,csharp] +---- +try +{ + throw new InvalidTimeZoneException(); +} +catch (InvalidTimeZoneException e) +{ + logger.Error(e, "setting daylight saving time failed") +} +---- + +Output (with intermixed messages): + +[source,log] +---- +12/21/2024 14:07:41.508 [main] ERROR log4net.Tests - setting daylight saving time failed +Exception of type 'System.InvalidTimeZoneException' was thrown. +12/21/2024 14:07:41.511 [worker] WARN log4net.Tests - some unrelated log message + at log4net.Tests.Appender.RemoteSyslogAppenderTest.LineBreakTest() + at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/rollingfileappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/rollingfileappender.adoc new file mode 100644 index 000000000..fd169688b --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/rollingfileappender.adoc @@ -0,0 +1,111 @@ +//// + 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 + + http://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. +//// + +[#rollingfileappender] += RollingFileAppender + +The `RollingFileAppender` extends the functionality of the `FileAppender` by adding the ability to automatically roll over log files based on specified criteria, such as file size or time intervals. + +This appender is useful for managing log files in production environments where log data grows over time and older logs should be preserved while maintaining a manageable file size. + +The following example shows how to configure the `RollingFileAppender` to write to the file `MyApp.log`. + +The file written to will always be named `MyApp.log` because the `StaticLogFileName` parameter is specified. + +The file will be rolled based on a size constraint (`RollingStyle`), and old log files will be archived when the size limit is reached. +Up to 10 (`MaxSizeRollBackups`) old files of 100 KB each (`MaximumFileSize`) will be kept. + +These rolled files will be named: `MyApp.log.1`, `MyApp.log.2`, `MyApp.log.3`, etc. + +This allows you to keep a set number of backup log files, which can be helpful for both auditing and troubleshooting, while ensuring that log file growth doesn't fill up disk space. + +[source,xml] +---- + + + + + + + + + + + +---- + +This example show how to configure the `RollingFileAppender` to roll log files on a date period. + +This example will roll the log file every minute. +To change the rolling period adjust the `DatePattern` value. +For example, a date pattern of "yyyyMMdd" will roll every day. + +See `System.Globalization.DateTimeFormatInfo` for a list of available patterns. + +[source,xml] +---- + + + + + + + + + +---- + +This example show how to configure the `RollingFileAppender` to roll log files on a date period and within a date period on file size. + +For each day only the last 10 files of 1MB will be kept. + +[source,xml] +---- + + + + + + + + + + + +---- + +This example show how to configure the `RollingFileAppender` to roll log files once per program execution. + +The `appendToFile` property is set to false to prevent the appender from overwriting the existing files. + +The `maxSizeRollBackups` is set to negative 1 to allow an infinite number of backup files. + +The file size does have to be limited but here it is set to 50 Gigabytes which, if a log file exceeds this size limit during a single run then it will also be rolled. + +[source,xml] +---- + + + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/smtpappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/smtpappender.adoc new file mode 100644 index 000000000..aa1a35e9d --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/smtpappender.adoc @@ -0,0 +1,87 @@ +//// + 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 + + http://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. +//// + +[#smtpappender] += SmtpAppender + +The `SmtpAppender` sends log events via email using the Simple Mail Transfer Protocol (SMTP). +This appender is useful for sending email notifications when certain events occur, such as errors or critical failures in your application. + +The following example shows how to configure the `SmtpAppender` to deliver log events via SMTP email. +The `To`, `From`, `Subject` and `SmtpHost` are required parameters. +This example shows how to deliver only significant events. + +A LevelEvaluator is specified with a threshold of WARN. +This means that an email will be sent for each WARN or higher level message that is logged. +Each email will also contain up to 512 (BufferSize) previous messages of any level to provide context. + +Messages not sent will be discarded. + +[source,xml] +---- + + + + + + + + + + + + + + +---- + +This example shows how to configure the `SmtpAppender` to deliver all messages in emails with 512 `bufferSize` messages per email. + +[source,xml] +---- + + + + + + + + + + + +---- + +This example shows a more verbose formatting layout for the mail messages. + +[source,xml] +---- + + + + + + + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/smtppickupdirappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/smtppickupdirappender.adoc new file mode 100644 index 000000000..bd4929ec2 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/smtppickupdirappender.adoc @@ -0,0 +1,54 @@ +//// + 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 + + http://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. +//// + +[#smtppickupdirappender.adoc] += SmtpPickupDirAppender + +The `SmtpPickupDirAppender` is configured similarly to the xref:./smtpappender.adoc[]. +The only difference is that rather than specify a SmtpHost parameter a `PickupDir` must be specified. + +The `PickupDir` parameter is a path that must exist and the code executing the appender must have permission to create new files and write to them in this directory. +The path is relative to the application's base directory (AppDomain.BaseDirectory). + +The following example shows how to configure the SmtpPickupDirAppender to deliver log events via SMTP email. +The `To`, `From`, `Subject` and `PickupDir` are required parameters. +This example shows how to deliver only significant events. + +A LevelEvaluator is specified with a threshold of WARN. +This means that an email will be sent for each WARN or higher level message that is logged. + +Each email will also contain up to 512 (BufferSize) previous messages of any level to provide context. + +Messages not sent will be discarded. + +[source,xml] +---- + + + + + + + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/traceappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/traceappender.adoc new file mode 100644 index 000000000..5119d55f5 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/traceappender.adoc @@ -0,0 +1,33 @@ +//// + 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 + + http://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. +//// + +[#traceappender] += TraceAppender + +The `TraceAppender` writes log events to the Trace output, which can be viewed in debuggers or other trace listeners. +It is useful for capturing logs in applications that are being debugged or for monitoring trace-level information during runtime. + +The following example shows how to configure the `TraceAppender` to log messages to the https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.trace[System.Diagnostics.Trace] system. + +[source,xml] +---- + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration/udpappender.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration/udpappender.adoc new file mode 100644 index 000000000..0cac823d2 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/configuration/udpappender.adoc @@ -0,0 +1,36 @@ +//// + 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 + + http://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. +//// + +[#udpappender] += UdpAppender + +The `UdpAppender` sends log events over the network using the UDP protocol. +It is typically used to forward log messages to remote logging systems over a network. + +The following example shows how to configure the `UdpAppender` to send events to a `remoteAddress` on the specified `remotePort`. + +[source,xml] +---- + + + + + + + + +---- \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/examples.adoc b/src/site/antora/modules/ROOT/pages/manual/examples.adoc new file mode 100644 index 000000000..62e2e3207 --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/examples.adoc @@ -0,0 +1,21 @@ +//// + 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 + + http://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. +//// + +[#examples] += Examples + +The examples can be found at https://github.com/apache/logging-log4net/tree/master/examples[examples] \ No newline at end of file diff --git a/src/site/antora/modules/ROOT/pages/manual/faq.adoc b/src/site/antora/modules/ROOT/pages/manual/faq.adoc new file mode 100644 index 000000000..37dcc01ae --- /dev/null +++ b/src/site/antora/modules/ROOT/pages/manual/faq.adoc @@ -0,0 +1,358 @@ +//// + 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 + + http://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. +//// +[#faq] += F.A.Q. + +[#setup-and-usage] +== Setup & Usage + +[#what-is-log4net] +=== What is log4net? + +log4net is a logging library that supports multiple output targets. + +It helps diagnose issues by enabling logging without modifying the application binary. +Designed for minimal performance impact, log4net allows log statements to remain in production code. + +A key feature is hierarchical loggers, which enable fine-grained control over log output to prevent excessive logging. +log4net is built for both speed and flexibility. + +[#prerequisites] +=== What are the prerequisites for log4net? + +log4net runs on net462 or higher and any framework supporting netstandard2.0. + +[#examples] +=== Are there examples for using log4net? + +The examples can be found at https://github.com/apache/logging-log4net/tree/master/examples[examples] + +[#features] +=== What are the features of log4net? + +See the xref:../features.adoc[] document. + +[#thread-safety] +=== Is log4net thread-safe? + +Yes, log4net is thread-safe. + +[#output] +=== What does log output look like? + +The log output can be customized in many ways. +One can completely override the output format by implementing a custom Layout + +Here is an example output using PatternLayout with the conversion pattern + +"%date [%thread] %-5level %logger - %message%newline" + +[source,text] +---- +2024-12-21 14:07:41,517 [main] DEBUG Animals.Carnivora.Dog - Woof! +2024-12-21 14:07:41,517 [main] WARN Animals.Carnivora.Dog - Meow! +---- + +The first field is the date and time of the log event. +The second field is the thread outputting the log statement. +The third field is the level of the log statement. +The fourth field is the name of the logger making the log request. +The text after the '-' is the message of the statement. + +[#loggers] +=== What are Loggers? + +Loggers are central to log4net's configuration. + +They are organized in a hierarchy and allow runtime control over which log statements are printed. + +Loggers inherit their levels from log4net's configuration. +Whether a log statement reaches an appender depends on its level and associated logger. + +[#contributing] +=== What should I keep in mind when contributing code? + +See https://github.com/apache/logging-log4net/blob/master/doc/CONTRIBUTING.md[contributing] + +[#distribution] +=== Where can I find the latest distribution of log4net? + +See the xref:./installation.adoc[] or xref:../download.adoc[]. + +[#disable-looging] +=== How do I completely disable all logging at runtime? + +Setting the Threshold on the Hierarchy to Level OFF will disable all logging from that Hierarchy. +This can be done in the log4net configuration file by setting the "threshold" attribute on the log4net configuration element to "OFF". + +For example: + +[source,xml] +---- + +---- + +[#options-for-appenders] +=== What are the configurable options for an appender? + +log4net uses public properties to configure components such as Appenders, Layouts, Loggers etc. + +Thus, any writable public property in on the appender corresponds to a configurable option. +For example, in RollingFileAppender the + +[source,csharp] +---- +public int MaxSizeRollBackups { set; } +---- + +property corresponds to the MaxSizeRollBackups option. + +Layouts options are also defined by their writable properties. +Same goes for most other log4net components. + +[#direct-output-per-level] +=== Is it possible to direct log output to different appenders by level? + +Yes, it is. + +Each appender has a Threshold option that filters out log events below a specified level. + +For example, setting an appender's threshold to DEBUG allows all higher levels (INFO, WARN, ERROR, FATAL) to pass through. This is useful since DEBUG messages are rarely helpful without surrounding context. + +On the other hand, setting the threshold to ERROR will exclude DEBUG, INFO, and WARN messages while keeping ERROR and FATAL. + +If you need to log only a specific level, use a LevelMatchFilter to ensure only events of that exact level are recorded. + +[#automatic-config-reload] +=== Is there a way to get log4net to automatically reload a configuration file if it changes? + +Yes. +The XmlConfigurator supports automatic reloading using the ConfigureAndWatch APIs. +Refer to the API documentation for details. + +[#custom-assemblies] +=== Can I load an appender from another assembly? + +Yes. +When specifying the type in the configuration file you can give the assembly qualified name of the type. +For example: + +[source,xml] +---- + +---- + +The runtime will try to locate the assembly called MyAssembly. + +[#newline-in-header] +=== How do I insert newlines into the layout header? + +To insert newlines in a layout header, use an XML numeric character reference. + +A carriage return and line feed (CR LF) are represented as \ \ . + +For example, to add a header and footer with newlines in the output, use this sequence in the configuration. + +[source,xml] +---- + +
+