Skip to content

Commit b1abe0e

Browse files
authored
replace logback with slf4j-jul (via #3281)
1 parent 64895d6 commit b1abe0e

File tree

4 files changed

+73
-22
lines changed

4 files changed

+73
-22
lines changed

allure-commandline/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ dependencies {
126126
allurePlugin(project(path = ":xunit-xml-plugin", configuration = "allurePlugin"))
127127
annotationProcessor("org.projectlombok:lombok")
128128
compileOnly("org.projectlombok:lombok")
129-
implementation("ch.qos.logback:logback-classic")
129+
implementation("org.slf4j:slf4j-jdk14")
130130
implementation("com.beust:jcommander")
131131
implementation("com.fasterxml.jackson.core:jackson-databind")
132132
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")

allure-commandline/src/dist/lib/config/logback.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

allure-commandline/src/main/java/io/qameta/allure/CommandLine.java

Lines changed: 71 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package io.qameta.allure;
1717

18-
import ch.qos.logback.classic.Level;
1918
import com.beust.jcommander.JCommander;
2019
import com.beust.jcommander.ParameterException;
2120
import io.qameta.allure.command.GenerateCommand;
@@ -26,19 +25,26 @@
2625
import org.slf4j.Logger;
2726
import org.slf4j.LoggerFactory;
2827

28+
import java.io.PrintWriter;
29+
import java.io.StringWriter;
2930
import java.nio.file.Path;
3031
import java.nio.file.Paths;
3132
import java.util.List;
3233
import java.util.Objects;
3334
import java.util.Optional;
34-
35-
import static org.slf4j.Logger.ROOT_LOGGER_NAME;
35+
import java.util.logging.Formatter;
36+
import java.util.logging.Handler;
37+
import java.util.logging.Level;
38+
import java.util.logging.LogManager;
39+
import java.util.logging.LogRecord;
40+
import java.util.logging.StreamHandler;
3641

3742
/**
3843
* @author eroshenkoam Artem Eroshenko
3944
*/
4045
@SuppressWarnings({
4146
"DeclarationOrder",
47+
"ClassDataAbstractionCoupling"
4248
})
4349
public class CommandLine {
4450

@@ -81,8 +87,8 @@ public static void main(final String[] args) throws InterruptedException {
8187
final String allureHome = System.getenv("APP_HOME");
8288
final CommandLine commandLine;
8389
if (Objects.isNull(allureHome)) {
84-
LOGGER.info("APP_HOME is not set, using default configuration");
8590
commandLine = new CommandLine((Path) null);
91+
LOGGER.info("APP_HOME is not set, using default configuration");
8692
} else {
8793
commandLine = new CommandLine(Paths.get(allureHome));
8894
}
@@ -124,15 +130,13 @@ public Optional<ExitCode> parse(final String... args) {
124130
"PMD.SystemPrintln",
125131
})
126132
public ExitCode run() {
127-
final ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger)
128-
LoggerFactory.getLogger(ROOT_LOGGER_NAME);
129-
133+
final java.util.logging.Logger rootLogger = initRootLogger();
130134
if (mainCommand.getVerboseOptions().isQuiet()) {
131135
rootLogger.setLevel(Level.OFF);
132136
}
133137

134138
if (mainCommand.getVerboseOptions().isVerbose()) {
135-
rootLogger.setLevel(Level.DEBUG);
139+
rootLogger.setLevel(Level.FINE);
136140
}
137141

138142
if (mainCommand.isVersion()) {
@@ -196,4 +200,63 @@ public MainCommand getMainCommand() {
196200
private void printUsage(final JCommander commander) {
197201
commander.usage();
198202
}
203+
204+
private static java.util.logging.Logger initRootLogger() {
205+
final java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger("");
206+
for (Handler handler : rootLogger.getHandlers()) {
207+
rootLogger.removeHandler(handler);
208+
}
209+
210+
final Handler handler = new StdOutHandler();
211+
handler.setLevel(Level.ALL);
212+
rootLogger.addHandler(handler);
213+
return rootLogger;
214+
}
215+
216+
/**
217+
* Print only a message from LogRecord.
218+
*/
219+
private static final class MessageOnlyFormatter extends Formatter {
220+
221+
@Override
222+
public String format(final LogRecord record) {
223+
final StringBuilder builder = new StringBuilder();
224+
builder.append(formatMessage(record))
225+
.append(System.lineSeparator());
226+
227+
final Throwable thrown = record.getThrown();
228+
if (thrown != null) {
229+
final StringWriter stringWriter = new StringWriter();
230+
final PrintWriter printWriter = new PrintWriter(stringWriter);
231+
thrown.printStackTrace(printWriter);
232+
printWriter.flush();
233+
builder.append(stringWriter);
234+
}
235+
236+
return builder.toString();
237+
}
238+
}
239+
240+
/**
241+
* This Handler publishes log records to System.out.
242+
* By default the MessageOnlyFormatter is used to only print log messages.
243+
*/
244+
@SuppressWarnings("PMD.AvoidSynchronizedAtMethodLevel")
245+
private static final class StdOutHandler extends StreamHandler {
246+
247+
StdOutHandler() {
248+
super(System.out, new MessageOnlyFormatter());
249+
}
250+
251+
@Override
252+
public synchronized void publish(final LogRecord record) {
253+
super.publish(record);
254+
flush();
255+
}
256+
257+
@Override
258+
public synchronized void close() {
259+
flush();
260+
}
261+
}
199262
}

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ subprojects {
8787
mavenBom("org.junit:junit-bom:6.0.3")
8888
}
8989
dependencies {
90-
dependency("ch.qos.logback:logback-classic:1.3.16")
9190
dependency("com.beust:jcommander:1.82")
9291
dependency("com.github.spotbugs:spotbugs:4.9.8")
9392
dependency("com.opencsv:opencsv:5.12.0")
@@ -109,6 +108,7 @@ subprojects {
109108
dependency("org.mockito:mockito-core:5.23.0")
110109
dependency("org.projectlombok:lombok:1.18.44")
111110
dependency("org.slf4j:slf4j-api:${orgSlf4jVersion}")
111+
dependency("org.slf4j:slf4j-jdk14:${orgSlf4jVersion}")
112112
dependency("org.slf4j:slf4j-nop:${orgSlf4jVersion}")
113113
dependency("org.slf4j:slf4j-simple:${orgSlf4jVersion}")
114114
dependency("org.zeroturnaround:zt-zip:1.17")

0 commit comments

Comments
 (0)