gpt4 book ai didi

java - Log4j2 自定义布局

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:17 25 4
gpt4 key购买 nike

我正在使用带有 PatternLayout 的 Log4j2。是否可以编写我自己的 Layout 来扩展 AbstractStringLayout,以便我可以自定义输出消息?

我已阅读文档,但我只看到布局的变体 - 没有自定义布局。

https://logging.apache.org/log4j/2.x/manual/layouts.html

最佳答案

是的,这是可能的

您可以使用自定义 AbstractStringLayoutLogEventPatternConverter

例如: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;
}
}

例如: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 )
{

}
}

确保您的配置文件包含所有自定义插件所在的包,

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>

关于java - Log4j2 自定义布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com