Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
ee07dc3
Revamp JTL page
vy Jun 2, 2024
439d206
Revamp JTL page
vy Jun 2, 2024
454c421
Move Pattern Layout to a separate page
vy Jun 4, 2024
f3879ab
Rewrite layouts in `layouts.adoc`
vy Jun 6, 2024
3150d81
Merge remote-tracking branch 'origin/2.x' into doc/2.x/layouts
vy Jun 6, 2024
631dbe4
Small adjustments
vy Jun 6, 2024
74a6ae4
Improve wording on UTF-8 default
vy Jun 10, 2024
f67176a
Improve wording
vy Jun 10, 2024
78330f0
Apply suggestions from code review
vy Jun 10, 2024
d651754
Merge remote-tracking branch 'origin/doc/2.x/layouts' into doc/2.x/la…
vy Jun 10, 2024
b95d668
Explain `PatternLayout` documentation notation
vy Jun 10, 2024
76f77b5
Remove incorrectly documented `%m{lookups}`
vy Jun 10, 2024
f77b5c0
Fix Pattern Layout gc-free lookups docs
vy Jun 10, 2024
c5f0126
Fix garbage-free notes about lookups for PL and JTL
vy Jun 10, 2024
0cf6c34
Add plugin ref links
vy Jun 10, 2024
f9deaaf
Move extending appenders/filters/lookups to their own pages
vy Jun 11, 2024
08d942b
Improve extending layouts
vy Jun 11, 2024
3c20113
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jun 11, 2024
d495947
Rewrite `plugins.adoc`
vy Jun 12, 2024
65b9924
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jun 13, 2024
fc1953b
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jun 20, 2024
e5b8161
Revamp `extending.adoc`
vy Jun 21, 2024
34eb9f0
Rewrite architecture page and several other affected pages
vy Jun 25, 2024
df1813d
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jun 25, 2024
defb250
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jun 25, 2024
e4c028b
Replace Ditaa with PlantUML
vy Jun 25, 2024
4e18097
Revamp the `Web Applications` page (part 1)
ppkarwasz Jun 25, 2024
c6dce1f
Add JSP documentation
ppkarwasz Jun 25, 2024
3d2feab
Fix RAT failure
ppkarwasz Jun 25, 2024
4c7414c
Add information about reconfiguration
ppkarwasz Jun 26, 2024
ae730af
Add and extend `log4j-appserver.adoc` and `logsep.adoc`
ppkarwasz Jun 28, 2024
bb50f07
Merge remote-tracking branch 'apache/doc/2.x/extending' into doc/2.x/…
ppkarwasz Jun 28, 2024
0c6eee7
Fix broken links
ppkarwasz Jun 28, 2024
353bb86
Merge remote-tracking branch 'apache/2.x' into doc/2.x/webapp
ppkarwasz Jun 28, 2024
d0a26f2
Add link to Payara (CE) classloading documentation
ppkarwasz Jun 28, 2024
71fbef6
Move `ConfigurationFactory` to `configuration.adoc`
vy Jun 26, 2024
dd7d8bc
Rewrite programmatic configuration
vy Jul 1, 2024
136506e
Merge remote-tracking branch 'origin/2.x' into doc/2.x/extending
vy Jul 1, 2024
f8a5534
Place `Reconfiguration reliability` under `Configuration`
vy Jul 1, 2024
0a09e70
Advise against programmatically modifying components
vy Jul 1, 2024
b690448
Fix Spotless failures
vy Jul 1, 2024
df9ee62
Remove incorrectly placed `Filters` section in `configuration.adoc`
vy Jul 1, 2024
cbbe196
Improve wording
vy Jul 1, 2024
e2a2168
Improve wording
vy Jul 1, 2024
def1d8f
Fix `ExampleConfigurationFactory` method overload
vy Jul 1, 2024
b950f88
Remove the mention of `type-safe`
vy Jul 1, 2024
cd56f42
Fix explanation on `Configurator.initialize()`
vy Jul 1, 2024
6399dbe
Fix explanation on `ConfigurationFactory` ordering
vy Jul 1, 2024
d1149f0
Fixing HTTP redirects based on fragments
vy Jul 1, 2024
c3e71b4
Fix `@Order` in `ExampleConfigurationFactory`
vy Jul 1, 2024
725352e
Apply suggestions from code review
ppkarwasz Jul 2, 2024
457bbd8
Apply review suggestions (2)
ppkarwasz Jul 2, 2024
6ad209e
Apply IDEA suggestions
ppkarwasz Jul 2, 2024
9104177
Reword global approach to logging
ppkarwasz Jul 2, 2024
2809eaa
Apply review suggestions (3)
ppkarwasz Jul 2, 2024
0338ead
Apply review suggestions (4)
ppkarwasz Jul 2, 2024
a44fe6c
Improve wording on `Usage#loadConfigurationFile()` example
vy Jul 2, 2024
43f84a7
Improve `LoggerContextFactory` explanations
vy Jul 2, 2024
8fd4b7e
Improve message factory documentation on placeholders
vy Jul 2, 2024
e505c16
Improve wording
vy Jul 2, 2024
242a7ed
Remove the mention of `elementType`
vy Jul 3, 2024
be4b992
Fix code typo
vy Jul 3, 2024
0b8c835
Explain which class loader is used
vy Jul 3, 2024
7985ea2
Merge branch 'doc/2.x/extending' into doc/2.x/webapp
vy Jul 3, 2024
9046907
Merge remote-tracking branch 'origin/2.x' into doc/2.x/webapp
vy Jul 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions log4j-jakarta-web/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
<description>The Apache Log4j support for Jakarta EE 9+ web servlet containers</description>

<properties>
<maven.javadoc.skip>false</maven.javadoc.skip>

<!--
~ OSGi and JPMS options
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"Configuration": {
"Appenders": {
// tag::servlet[]
"Servlet": {
"name": "SERVLET",
"PatternLayout": {
"pattern": "%m%n",
"alwaysWriteExceptions": false // <1>
}
}
// end::servlet[]
},
"Loggers": {
"Root": {
"level": "INFO",
"AppenderRef": {
"ref": "SERVLET"
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#
# 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.
#
##
# tag::servlet[]
appender.0.type = Servlet
appender.0.name = SERVLET
appender.0.layout.type = PatternLayout
appender.0.layout.pattern = %m%n
# <1>
appender.0.layout.alwaysWriteExceptions = false
# end::servlet[]

rootLogger.level = INFO
rootLogger.appenderRef.0.ref = SERVLET
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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 xmlns="https://logging.apache.org/xml/ns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
https://logging.apache.org/xml/ns
https://logging.apache.org/xml/ns/log4j-config-2.xsd">
<Appenders>
<!-- tag::servlet[] -->
<Servlet name="SERVLET">
<PatternLayout pattern="%m%n" alwaysWriteExceptions="false"/> <!--1-->
</Servlet>
<!-- end::servlet[] -->
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="SERVLET"/>
</Root>
</Loggers>
</Configuration>
Original file line number Diff line number Diff line change
@@ -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
#
# 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:
Appenders:
# tag::servlet[]
Servlet:
name: "SERVLET"
PatternLayout:
pattern: "%m%n"
alwaysWriteExceptions: false # <1>
# end::servlet[]
Loggers:
Root:
level: "INFO"
AppenderRef:
ref: "SERVLET"
Original file line number Diff line number Diff line change
@@ -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.
*/
package example;

import javax.servlet.AsyncContext;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.web.Log4jWebSupport;
import org.apache.logging.log4j.web.WebLoggerContextUtils;

@WebServlet(urlPatterns = "/async/*", asyncSupported = true)
public class AsyncServlet extends HttpServlet {

private final Logger logger = LogManager.getLogger();

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
// tag::manual[]
AsyncContext asyncContext = req.startAsync();
Log4jWebSupport webSupport = WebLoggerContextUtils.getWebLifeCycle(getServletContext());
asyncContext.start(() -> {
try {
webSupport.setLoggerContext();
// Put your logic here
} finally {
webSupport.clearLoggerContext();
}
});
// end::manual[]
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
// tag::automatic[]
AsyncContext asyncContext = req.startAsync();
asyncContext.start(WebLoggerContextUtils.wrapExecutionContext(getServletContext(), () -> {
// Put your logic here
}));
// end::automatic[]
}
}
37 changes: 37 additions & 0 deletions src/site/antora/modules/ROOT/examples/manual/webapp/jndi.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<!-- tag::jndi[] -->
<context-param>
<param-name>isLog4jContextSelectorNamed</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>log4jContextName</param-name>
<param-value>your_application_name</param-value>
</context-param>
<env-entry>
<env-entry-name>log4j/context-name</env-entry-name>
<env-entry-value>your_application_name</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<!-- end::jndi[] -->
</web-app>
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"Configuration": {
"Appenders": {
// tag::global[]
"File": {
"name": "GLOBAL",
"fileName": "logs/global.log",
"JsonTemplateLayout": {
"EventTemplateAdditionalField": {
"key": "contextName",
"value": "$${web:contextName}"
}
}
},
// end::global[]
// tag::routing[]
"Routing": {
"name": "ROUTING",
"Routes": {
"pattern": "$${web:contextName:-common}",
"Route": {
"File": {
"name": "${web:contextName:-common}",
"fileName": "logs/${web:contextName:-common}.log",
"PatternLayout": {
"pattern": "d [%t] %-5p %c - %m%n"
}
}
}
}
}
// end::routing[]
},
"Loggers": {
"Route": {
"level": "INFO",
"AppenderRef": [
{
"ref": "GLOBAL"
},
{
"ref": "ROUTING"
}
]
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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.
#
##
# tag::global[]
appender.0.type = File
appender.0.name = GLOBAL
appender.0.fileName = logs/global
appender.0.layout.type = JsonTemplateLayout
appender.0.layout.0.type = EventTemplateAdditionalField
appender.0.layout.0.key = contextName
appender.0.layout.0.value = $${web:contextName}
# end::global[]
# tag::routing[]
appender.1.type = Routing
appender.1.name = ROUTING
appender.1.route.type = Routes
appender.1.route.pattern = $${web:contextName:-common}
appender.1.route.0.type = Route
appender.1.route.0.appender.type = File
appender.1.route.0.appender.name = ${web:contextName:-common}
appender.1.route.0.appender.fileName = logs/${web:contextName:-common}.log
appender.1.route.0.appender.layout.type = PatternLayout
appender.1.route.0.appender.layout.pattern = %d [%t] %-5p %c - %m%n
# end::routing[]
rootLogger.level = INFO
rootLogger.appenderRef.0.ref = GLOBAL
rootLogger.appenderRef.1.ref = ROUTING
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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 xmlns="https://logging.apache.org/xml/ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-config-2.xsd">
<Appenders>
<!-- tag::global[] -->
<File name="GLOBAL" fileName="logs/global.log">
<JsonTemplateLayout>
<EventTemplateAdditionalField key="contextName"
value="$${web:contextName}"/>
</JsonTemplateLayout>
</File>
<!-- end::global[] -->
<!-- tag::routing[] -->
<Routing name="ROUTING">
<Routes pattern="$${web:contextName:-common}">
<Route>
<File name="${web:contextName:-common}"
fileName="logs/${web:contextName:-common}.log">
<PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
</File>
</Route>
</Routes>
</Routing>
<!-- end::routing[] -->
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="GLOBAL"/>
<AppenderRef ref="ROUTING"/>
</Root>
</Loggers>
</Configuration>
Loading