Log4j2自定义布局 [英] Log4j2 custom layout
问题描述
我正在将Log4j2与PatternLayout
一起使用.是否可以编写扩展了AbstractStringLayout
的自己的Layout
,以便我可以自定义输出消息?
I am using Log4j2 with a PatternLayout
. Is it possible to write my own Layout
that extends AbstractStringLayout
, so that I can customize my output message?
我已经阅读了文档,但只看到布局的变化-没有自定义布局.
I have read the docs but I only see variations of layouts - no custom one.
https://logging.apache.org/log4j/2 .x/manual/layouts.html
推荐答案
是可以的
您可以使用自定义AbstractStringLayout
或LogEventPatternConverter
EX: AbstractStringLayout
@Plugin(name = "NewCustLayout", category = Node.CATEGORY, elementType = Layout.ELEMENT_TYPE, printObject = true)
public class NewCustLayout extends AbstractStringLayout
{
protected NewCustLayout( Charset charset )
{
super( charset );
}
@Override public String toSerializable( LogEvent event )
{
return null;
}
}
EX: LogEventPatternConverter
@Plugin(name = "NewLayoutConverter", category = "Converter")
@ConverterKeys({"custLayConv"})
public class NewLayoutConverter extends LogEventPatternConverter
{
/**
* Constructs an instance of LoggingEventPatternConverter.
*
* @param name name of converter.
* @param style CSS style for output.
*/
protected NewLayoutConverter( String name, String style )
{
super( name, style );
}
@Override public void format( LogEvent event, StringBuilder toAppendTo )
{
}
}
确保您的配置文件包含所有自定义插件都位于的包,
Make sure that your configuration file contain the package that all the custom plugins are located ,
packages ="logging.log4j.custom.plugins"
packages="logging.log4j.custom.plugins"
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Configuration packages="logging.log4j.custom.plugins" name="SOME NAME">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d{MM-dd-yyyy HH:mm:ss,SSS} [%t] %custLayConv %msg%n"/>
</Console>
<RollingRandomAccessFile name="example" fileName="${sys:tbx.log.path}example.log" filePattern="${sys:tbx.log.path}example.log.%i" append="true" immediateFlush="true" bufferSize="262144">
<NewCustLayout pattern="%d{MM-dd-yyyy HH:mm:ss,SSS} - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy fileIndex="max" min="1" max="100" compressionLevel="3"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<logger name="logger" level="INFO" additivity="false">
<AppenderRef ref="example" level="INFO"/>
</logger>
<Root level="INFO">
<AppenderRef ref="CONSOLE" level="INFO"/>
</Root>
</Loggers>
</Configuration>
这篇关于Log4j2自定义布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!