Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
515072b2
Commit
515072b2
authored
Jun 22, 2021
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.5.x'
Closes gh-27018
parents
f20dc848
cf940fd3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
12 deletions
+67
-12
SpringBootConfigurationFactory.java
...k/boot/logging/log4j2/SpringBootConfigurationFactory.java
+3
-12
SpringBootPropertySource.java
...amework/boot/logging/log4j2/SpringBootPropertySource.java
+54
-0
org.apache.logging.log4j.util.PropertySource
...INF/services/org.apache.logging.log4j.util.PropertySource
+1
-0
Log4J2LoggingSystemTests.java
...amework/boot/logging/log4j2/Log4J2LoggingSystemTests.java
+9
-0
No files found.
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactory.java
View file @
515072b2
...
...
@@ -30,13 +30,12 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
*
* <ol>
* <li>Prevent logger warnings from being printed when the application first starts.
* <li>Disable its shutdown hook
* </ol>
*
* This factory is ordered last and is triggered by a {@code log4j2.springboot} classpath
* resource (which is bundled in this jar). If the {@link Log4J2LoggingSystem} is active,
* a
custom {@link DefaultConfiguration} is returned with the expectation that the system
*
will
later re-initialize Log4J2 with the correct configuration file.
* a
{@link DefaultConfiguration} is returned with the expectation that the system will
* later re-initialize Log4J2 with the correct configuration file.
*
* @author Phillip Webb
* @since 1.5.0
...
...
@@ -57,15 +56,7 @@ public class SpringBootConfigurationFactory extends ConfigurationFactory {
if
(
source
==
null
||
source
==
ConfigurationSource
.
NULL_SOURCE
)
{
return
null
;
}
return
new
SpringBootConfiguration
();
}
private
static
final
class
SpringBootConfiguration
extends
DefaultConfiguration
{
private
SpringBootConfiguration
()
{
this
.
isShutdownHookEnabled
=
false
;
}
return
new
DefaultConfiguration
();
}
}
spring-boot-project/spring-boot/src/
test/java/org/springframework/boot/logging/log4j2/SpringBootConfigurationFactoryTests
.java
→
spring-boot-project/spring-boot/src/
main/java/org/springframework/boot/logging/log4j2/SpringBootPropertySource
.java
View file @
515072b2
/*
* Copyright 2012-20
19
the original author or authors.
* Copyright 2012-20
21
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -16,27 +16,39 @@
package
org
.
springframework
.
boot
.
logging
.
log4j2
;
import
java.
io.ByteArrayInputStream
;
import
java.
io.IOException
;
import
java.
util.Collections
;
import
java.
util.Map
;
import
org.apache.logging.log4j.core.LoggerContext
;
import
org.apache.logging.log4j.core.config.ConfigurationSource
;
import
org.junit.jupiter.api.Test
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
org.apache.logging.log4j.core.util.ShutdownCallbackRegistry
;
import
org.apache.logging.log4j.util.BiConsumer
;
import
org.apache.logging.log4j.util.PropertySource
;
/**
*
Tests for {@link SpringBootConfigurationFactory}
.
*
Spring Boot {@link PropertySource} that disables Log4j2's shutdown hook
.
*
* @author Andy Wilkinson
* @since 2.5.2
*/
class
SpringBootConfigurationFactoryTests
{
public
class
SpringBootPropertySource
implements
PropertySource
{
private
static
final
String
PREFIX
=
"log4j."
;
private
final
Map
<
String
,
String
>
properties
=
Collections
.
singletonMap
(
ShutdownCallbackRegistry
.
SHUTDOWN_HOOK_ENABLED
,
"false"
);
@Override
public
void
forEach
(
BiConsumer
<
String
,
String
>
action
)
{
this
.
properties
.
forEach
((
key
,
value
)
->
action
.
accept
(
key
,
value
));
}
@Override
public
CharSequence
getNormalForm
(
Iterable
<?
extends
CharSequence
>
tokens
)
{
return
PREFIX
+
Util
.
joinAsCamelCase
(
tokens
);
}
@Test
void
producesConfigurationWithShutdownHookDisabled
()
throws
IOException
{
ConfigurationSource
source
=
new
ConfigurationSource
(
new
ByteArrayInputStream
(
new
byte
[
0
]));
assertThat
(
new
SpringBootConfigurationFactory
().
getConfiguration
(
new
LoggerContext
(
""
),
source
)
.
isShutdownHookEnabled
()).
isFalse
();
@Override
public
int
getPriority
()
{
return
-
200
;
}
}
spring-boot-project/spring-boot/src/main/resources/META-INF/services/org.apache.logging.log4j.util.PropertySource
0 → 100644
View file @
515072b2
org.springframework.boot.logging.log4j2.SpringBootPropertySource
\ No newline at end of file
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/log4j2/Log4J2LoggingSystemTests.java
View file @
515072b2
...
...
@@ -35,6 +35,8 @@ import org.apache.logging.log4j.core.LoggerContext;
import
org.apache.logging.log4j.core.config.Configuration
;
import
org.apache.logging.log4j.core.config.LoggerConfig
;
import
org.apache.logging.log4j.core.config.Reconfigurable
;
import
org.apache.logging.log4j.core.util.ShutdownCallbackRegistry
;
import
org.apache.logging.log4j.util.PropertiesUtil
;
import
org.junit.jupiter.api.AfterEach
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Disabled
;
...
...
@@ -370,6 +372,13 @@ class Log4J2LoggingSystemTests extends AbstractLoggingSystemTests {
.
isEqualTo
(
new
LoggerConfiguration
(
"com.example.test"
,
LogLevel
.
WARN
,
LogLevel
.
WARN
));
}
@Test
void
shutdownHookIsDisabled
()
{
assertThat
(
PropertiesUtil
.
getProperties
().
getBooleanProperty
(
ShutdownCallbackRegistry
.
SHUTDOWN_HOOK_ENABLED
,
true
))
.
isFalse
();
}
private
String
getRelativeClasspathLocation
(
String
fileName
)
{
String
defaultPath
=
ClassUtils
.
getPackageName
(
getClass
());
defaultPath
=
defaultPath
.
replace
(
'.'
,
'/'
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment