Home > Back-end >  Log4j2 custom layout error error contains an invalid element or attribute
Log4j2 custom layout error error contains an invalid element or attribute

Time:09-29

Log4j2 custom layout error error RollingFile contains an invalid element or attribute FLayout
Use log4j2-2.8.1 version,
Custom a FLayout below
 
Package com.com mon;
Import the Java. Nio. Charset. Charset;
Import the Java. Util. Arrays;
import java.util.Date;
import java.util.List;

The import org. Apache. Logging. Log4j. Core. Config. The Configuration;
The import org. Apache. Logging. Log4j. Core. Config. The Node;
The import org. Apache. Logging. Log4j. Core. Layout;
The import org. Apache. Logging. Log4j. Core. LogEvent;
The import org. Apache. Logging. Log4j. Core. Config. Plugins. The Plugin;
The import org. Apache. Logging. Log4j. Core. Config. Plugins. PluginAttribute;
The import org. Apache. Logging. Log4j. Core. Config. Plugins. PluginConfiguration;
The import org. Apache. Logging. Log4j. Core. Config. Plugins. PluginFactory;
The import org. Apache. Logging. Log4j. Core. Layout. AbstractStringLayout;
The import org. Apache. Logging. Log4j. Core. The pattern. LogEventPatternConverter;
The import org. Apache. Logging. Log4j. Core. The pattern. PatternFormatter;
The import org. Apache. Logging. Log4j. Core. The pattern. PatternParser;

@ the Plugin (name="FLayout", a category=Node. The category, elementType=Layout. ELEMENT_TYPE, printObject=true)
Public final class FLayout extends AbstractStringLayout {
Private static final String KEY="Converter";
Private final PatternSerializer fPatternSerializer;

Private FLayout (final Configuration config, final Charset Charset, final String pattern, final String headerPattern,
Final String footerPattern) {
Super (config, charset, new PatternSerializer (getPatternFormatter (config, headerPattern)),
New PatternSerializer (getPatternFormatter (config, footerPattern)));
Enclosing fPatternSerializer=new PatternSerializer (getPatternFormatter (config, pattern));
}

@ PluginFactory
Public static FLayout createLayout (@ PluginConfiguration final Configuration config,
@ PluginAttribute (value="https://bbs.csdn.net/topics/charset", defaultString="utf-8") final Charset Charset,
@ PluginAttribute (" pattern ") String pattern,
@ PluginAttribute (" header ") String headerPattern,
@ PluginAttribute (" footer ") String footerPattern) {
If (the pattern==null) {
The pattern="% d {yyyy/MM/dd HH: MM: ss. The SSS} : % m % n";
}
If (headerPattern==null) {
HeaderPattern="% m % n";
}
If (footerPattern==null) {
FooterPattern="% m % n";
}

Return new FLayout (config, charset, pattern, headerPattern, footerPattern);
}

@ Override
Public String toSerializable (final LogEvent event) {
Return this. FPatternSerializer. ToSerializable (event);
}

Public static PatternFormatter [] getPatternFormatter (final Configuration config, final String pattern) {
Final PatternParser parser=createPatternParser (config);
Final List List=parser. Parse (pattern);
Final PatternFormatter [] formatters=list. ToArray (new PatternFormatter [0]).
Return formatters.
}


Public static PatternParser createPatternParser (final Configuration config) {
If (config==null) {
Return new PatternParser (config, KEY, LogEventPatternConverter. Class);
}
PatternParser parser=config. GetComponent (KEY);
If (parser==null) {
Parser=new PatternParser (config, KEY, LogEventPatternConverter. Class);
Config. AddComponent (KEY, parser);
Parser=config. GetComponent (KEY);
}
Return parser.
}



@ Override
Public byte [] toByteArray (LogEvent loge) {
{if ((loge==null))
return null;
}
String formatLoge=toSerializable (loge);
Return formatLoge. GetBytes ();
}

}

 package com.com mon; 

Import the Java. Util. Arrays;

The import org. Apache. Logging. Log4j. Core. LogEvent;
The import org. Apache. Logging. Log4j. Core. Layout. AbstractStringLayout. Serializer;
The import org. Apache. Logging. Log4j. Core. Layout. AbstractStringLayout. Serializer2;
The import org. Apache. Logging. Log4j. Core. The pattern. PatternFormatter;
The import org. Apache. Logging. Log4j. Util. PropertiesUtil;

Public class PatternSerializer implements Serializer, Serializer2 {

Public final PatternFormatter [] formatters;
Public PatternSerializer (final PatternFormatter formatters) [] {
super();
Enclosing formatters=formatters;

}
Protected the static final ints DEFAULT_STRING_BUILDER_SIZE=1024;

Protected the static final ints MAX_STRING_BUILDER_SIZE=Math. Max (DEFAULT_STRING_BUILDER_SIZE,
The size (" log4j layoutStringBuilder maxSize ", 2 * 1024));
Private static final ThreadLocal ThreadLocal=new ThreadLocal<> (a);

/* *
* Returns a {@ code StringBuilder} that this Layout implementation can use to write the formatted log event to.
*
* @ return a {@ code StringBuilder}
*/
Protected the static StringBuilder getStringBuilder () {
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  • Related