如何以属性样式配置log4j csv布局?

时间:2018-12-07 05:49:11

标签: java csv logging log4j

我当前的配置(并且此配置工作正常)

int

现在我要设置csv布局。我已添加了commons-csv依赖项
here

然后我尝试设置CsvParameterLayout,但是它不起作用

log4j.appender.activity=org.apache.log4j.DailyRollingFileAppender
log4j.appender.activity.file=../logs/activity.log
log4j.appender.activity.append=true
log4j.appender.activity.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.activity.layout=org.apache.log4j.SimpleLayout
log4j.appender.activity.threshold=info

如果我只是使用SimpleLayout或PatternLayout并只写log.info(“ string,” +“” string,“ +” string“);您会怎么想?

2 个答案:

答案 0 :(得分:0)

要使用CsvParameterLayout,请确保已设置以下依赖项。

<dependencies>
 <dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.4</version>
 </dependency>
 <dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.4</version>
 </dependency>
 <dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.2</version>
 </dependency>
</dependencies>

有时候我使用此log4j.xml记录2列行。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="csvLog.fileName">csvLog</Property>
        <Property name="file-header">column1,column2</Property>
    </Properties>
    <Appenders>
        <RollingFile name="csvFile" 
                     fileName="${csvLog.fileName}.tmp"
                     filePattern="${csvLog.filename}-%d{MM-dd-yyyy}-%i.csv" >
            <CsvParameterLayout delimiter="," header="${file-header}\n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="200" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="debug" additivity="false">
            <AppenderRef ref="csvFile" level="debug"/>
        </Root>
    </Loggers>
</Configuration>

答案 1 :(得分:0)

我已经在log4j2中成功使用了

appender.csvSummary.type = File
appender.csvSummary.name = CSVSUMMARY
appender.csvSummary.append=false
appender.csvSummary.fileName = ${csvPrefix}-${SUM}-${date:yyyy-MM-dd-HH-mm-ss}.csv
appender.csvSummary.layoutString.type = CsvParameterLayout
appender.csvSummary.layoutString.delimiter = ,
appender.csvSummary.layoutString.header = path,test_name,outcome\n