Java >> Java tutorial >  >> Tag >> Log4j

Log4j2 brugerdefineret layout

Ja det er muligt

Du kan bruge tilpasset AbstractStringLayout eller 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 )
    {

    }
}

Sørg for, at din konfigurationsfil indeholder pakken, som alle brugerdefinerede plugins er placeret ,

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 tag