logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-943) How to configure StatisticsCsvLayout in log4j2 ?
Date Fri, 23 Jan 2015 01:55:34 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14288585#comment-14288585

Remko Popma commented on LOG4J2-943:

If I may offer a quick suggestion: if the org.perf4j StatisticsCsvLayout is not directly compatible
with log4j2, you may need to create your own (or convince the perf4j people to port this layout
to log4j2).

Fortunately creating a custom layout is not very difficult. Here is some sample code. You
can also look at the log4j2 source code for more details, like how to pass parameters.

@Plugin(name = "StatisticsCsvLayout", category = "Core", elementType = "layout", printObject
= true)
public final class StatisticsCsvLayout extends AbstractLayout<LogEvent> {

    public StatisticsCsvLayout(String param1, String param2) {
         // TODO you may or may not need parameters, feel free to add or remove them

    public byte[] toByteArray(LogEvent event) {
        final byte[] result = createCsv(event);
        return result;

    private byte[] createCsv(LogEvent event) {
          // TODO your implementation goes here

    public LogEvent toSerializable(LogEvent event) {
        return event;
    public String getContentType() {
        return "text/csv";
    public Map<String, String> getContentFormat() {
        return new HashMap<String, String>();
    public static StatisticsCsvLayout createLayout() {
            @PluginAttribute("param1") final String param1,
            @PluginAttribute("param2") final String param2) { // add more if necessary...
        return new StatisticsCsvLayout(param1, param2);

You would then configure like this (you may not need the packages declaration):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" packages="package.of.layout.class">
    <File name="file" fileName="log.csv">
      <StatisticsCsvLayout param1="someValue" />
    <Root level="trace" includeLocation="false">
      <AppenderRef ref="file"/>

> How to configure StatisticsCsvLayout in log4j2 ?
> ------------------------------------------------
>                 Key: LOG4J2-943
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-943
>             Project: Log4j 2
>          Issue Type: Question
>          Components: Appenders, Layouts, Plugins
>    Affects Versions: 2.1
>         Environment: Windows7, Java
>            Reporter: Mike Andrew
>            Priority: Critical
>              Labels: log4j2, log4j2.xml
>             Fix For: 2.1
> Need help from migrating log4j to log4j2. I have a rollingFileAppender. I need this appender
to make use of "StatisticsCsvLayout" in org.perf4j. Previously in log4j 1.x version we used
to directly refer the StatisticsCsvLayout from any appender using following tag in log4j.xml.
> <Layout class="org.perf4j.log4j.StatisticsCsvLayout"/>
> We are unable to confire this from log4j2.xml as there is no provision to make use of
external layouts directly. Please tell me how to configure this in log4j2.xml.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org

View raw message