0

Адаптер QConsole-Log4j2

This commit is contained in:
2017-05-12 16:22:38 +03:00
parent 2d1702ce5f
commit 03461857de
2 changed files with 54 additions and 3 deletions

View File

@@ -1,16 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Configuration> <Configuration packages="lwjake2.logger.log4j2">
<Appenders> <Appenders>
<Console name="Console" target="SYSTEM_OUT"> <Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] (%t) \{%logger{36}\} %msg%n"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] (%t) \{%20.20c\} %msg%n"/>
</Console> </Console>
<File name="File" fileName="qconsole.log" append="true"> <QConsole name="QConsole">
<PatternLayout pattern="%msg"/>
</QConsole>
<File name="File" fileName="qconsole.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] (%t) \{%logger{36}\} %msg%n"/> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] (%t) \{%logger{36}\} %msg%n"/>
</File> </File>
</Appenders> </Appenders>
<Loggers> <Loggers>
<Root level="all"> <Root level="all">
<AppenderRef ref="Console"/> <AppenderRef ref="Console"/>
<AppenderRef ref="QConsole"/>
<AppenderRef ref="File"/> <AppenderRef ref="File"/>
</Root> </Root>
</Loggers> </Loggers>

View File

@@ -0,0 +1,47 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2017-05-12
*/
package lwjake2.logger.log4j2;
import lwjake2.client.Console;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.core.layout.PatternLayout;
import java.io.Serializable;
@Plugin(name = "QConsole", category = "Core", elementType = "appender", printObject = true)
public class QConsoleAppender extends AbstractAppender {
@PluginFactory
public static QConsoleAppender createAppender (
@PluginAttribute("name") String name,
@PluginElement("Layout") Layout<? extends Serializable> layout,
@PluginElement("Filter") final Filter filter
) {
if (name == null) {
LOGGER.error("No name provided for QConsoleAppender");
return null;
}
if (layout == null) {
layout = PatternLayout.createDefaultLayout();
}
return new QConsoleAppender(name, filter, layout, true);
}
protected QConsoleAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
super(name, filter, layout, ignoreExceptions);
}
@Override
public void append(LogEvent event) {
String msg = new String(getLayout().toByteArray(event));
Console.Print(msg+"\n");
}
}