Skip to content
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
48 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
4c7414c
Add information about reconfiguration
ppkarwasz Jun 26, 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
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
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
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"Configuration": {
"Appenders": {
"Console": {
"name": "CONSOLE",
"JsonTemplateLayout": {}
}
},
"Loggers": {
"Root": {
"level": "WARN",
"AppenderRef": {
"ref": "CONSOLE"
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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
#
# 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.
#
appender.0.type = Console
appender.0.name = CONSOLE
appender.0.layout.type = JsonTemplateLayout

rootLogger.level = WARN
rootLogger.appenderRef.0.ref = CONSOLE
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?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>
<Console name="CONSOLE">
<JsonTemplateLayout/>
</Console>
</Appenders>

<Loggers>
<Root level="WARN">
<AppenderRef ref="CONSOLE"/>
</Root>
</Loggers>

</Configuration>
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.
#
Configuration:

Appenders:
Console:
name: "CONSOLE"
JsonTemplateLayout: {}

Loggers:
Root:
level: "WARN"
AppenderRef:
ref: "CONSOLE"
Original file line number Diff line number Diff line change
@@ -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.
*/
package com.example;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.LoggerConfig;

public class ExampleConfiguration extends XmlConfiguration {

public ExampleConfiguration(LoggerContext loggerContext, ConfigurationSource configSource) {
super(loggerContext, configSource);
}

@Override
protected void doConfigure() {
Appender appender = createAppender("ExampleAppender");
appender.start();
addAppender(appender);
LoggerConfig loggerConfig = LoggerConfig.newBuilder()
.withConfig(this)
.withAdditivity(false)
.withLevel(Level.INFO)
.withLoggerName("com.example")
.withRefs(new AppenderRef[] {AppenderRef.createAppenderRef("ExampleAppender", null, null)})
.build();
loggerConfig.addAppender(appender, null, null);
addLogger("com.example", loggerConfig);
}
}
Original file line number Diff line number Diff line change
@@ -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.
*/
package com.example;

import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Order;
import org.apache.logging.log4j.core.config.plugins.Plugin;

// tag::class[]
@Order(100)
@Plugin(name = "ExampleConfigurationFactory", category = ConfigurationFactory.CATEGORY)
public class ExampleConfigurationFactory extends ConfigurationFactory {

@Override
public Configuration getConfiguration(LoggerContext loggerContext, ConfigurationSource source) { // <1>
// Return a `Configuration`...
}

@Override
public Configuration getConfiguration(LoggerContext loggerContext, String name, URI configLocation) {
// Return a `Configuration`...
}

@Override
public String[] getSupportedTypes() {
return new String[] {"*"};
}
}
// end::class[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* 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 com.example;

import java.net.URI;
import java.util.Arrays;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.AbstractConfiguration;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
import org.apache.logging.log4j.core.config.composite.CompositeConfiguration;

final class Usage {

private static Configuration createConfiguration() {
// tag::createConfiguration[]
ConfigurationBuilder<BuiltConfiguration> configBuilder =
ConfigurationBuilderFactory.newConfigurationBuilder(); // <1>
Configuration configuration = configBuilder
.add(
configBuilder // <2>
.newAppender("CONSOLE", "List")
.add(configBuilder.newLayout("JsonTemplateLayout")))
.add(
configBuilder // <3>
.newRootLogger(Level.WARN)
.add(configBuilder.newAppenderRef("CONSOLE")))
.build(false); // <4>
// end::createConfiguration[]
}

private static void useConfiguration() {
// tag::useConfiguration[]
Configuration configuration = createConfiguration();
try (LoggerContext loggerContext = Configurator.initialize(configuration)) {
// Use `LoggerContext`...
}
// end::useConfiguration[]
}

private static void reconfigureActiveLoggerContext() {
// tag::reconfigureActiveLoggerContext[]
Configuration configuration = createConfiguration();
Configurator.reconfigure(configuration);
// end::reconfigureActiveLoggerContext[]
}

private static Configuration loadConfigurationFile() {
// tag::loadConfigurationFile[]
ConfigurationFactory.getInstance()
.getConfiguration(
null, // <1>
null, // <2>
URI.create("uri://to/my/log4j2.xml")); // <3>
// end::loadConfigurationFile[]
}

private static Configuration combineConfigurations() {
// tag::combineConfigurations[]
ConfigurationFactory configFactory = ConfigurationFactory.getInstance();
AbstractConfiguration commonConfig = (AbstractConfiguration) // <2>
configFactory.getConfiguration(null, null, URI.create("classpath:log4j2-common.xml")); // <1>
AbstractConfiguration appConfig = (AbstractConfiguration) // <2>
configFactory.getConfiguration(null, null, URI.create("classpath:log4j2-app.xml")); // <1>
AbstractConfiguration runtimeConfig = ConfigurationBuilderFactory.newConfigurationBuilder()
// ...
.build(false); // <3>
return new CompositeConfiguration(Arrays.asList(commonConfig, appConfig, runtimeConfig)); // <4>
// end::combineConfigurations[]
}
}
Binary file removed src/site/antora/modules/ROOT/images/Log4jClasses.jpg
Binary file not shown.
5 changes: 5 additions & 0 deletions src/site/antora/modules/ROOT/pages/manual/api.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ include::partial$manual/api-best-practice-use-supplier.adoc[]
link:../javadoc/log4j-api/org/apache/logging/log4j/Logger.html[`Logger`]s are the primary entry point for logging.
In this section we will introduce you to further details about ``Logger``s.

[TIP]
====
Refer to xref:manual/architecture.adoc[] to see where ``Logger``s stand in the big picture.
====

[#logger-names]
=== Logger names

Expand Down
Loading