如何使用apache log4j2功能和log4j2配置文件写入CSV文件?

悉达思·梅塔(Siddharth Mehta)

我一直在努力使用Log4j中的CsvParameterLayout生成CSV文件。我已将log4j2配置文件编码如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="csvLog.fileName">C:/ql/logs/csvLog</Property>
</Properties>
<Appenders>
<RollingFile name="csvFile" fileName="${csvLog.fileName}.tmp"
    filePattern="${csvLog.filename}-%d{MM-dd-yyyy}-%i.csv" header="${file-header}">
        <CsvParameterLayout delimeter=","/>
        <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>

但是,我无法生成所需的CSV文件。有人可以帮我吗?同样在将来,我想在我将使用线程上下文生成的所有打印内容之前添加一个唯一的ID。

请帮忙。

次优

遵循CSV布局的Log4j 2文档之后,它取决于Apache Commons CSV

查找以下工作片段。

pom.xml

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

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="csvLog.fileName">csvLog</Property>
        <Property name="file-header">column1,column2,column3</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>

Java代码段

Logger logger = LogManager.getLogger(...);
logger.info("sample output", "foo", "bar");

输出 csvLog.tmp

column1,column2,column3
foo,bar

编辑

log4j2.properties

appenders = csvFile

appender.csvFile.type = RollingFile
appender.csvFile.name = CSVFILE
appender.csvFile.fileName = csvLog.tmp
appender.csvFile.filePattern= csvLog-%d{MM-dd-yyyy}-%i.csv
appender.csvFile.layout.type = CsvParameterLayout
appender.csvFile.layout.delimiter = ,
appender.csvFile.layout.header = column1,column2,column3\n
appender.csvFile.policies.type = Policies
appender.csvFile.policies.time.type = TimeBasedTriggeringPolicy
appender.csvFile.policies.time.interval = 1
appender.csvFile.policies.time.modulate = true
appender.csvFile.policies.size.type = SizeBasedTriggeringPolicy
appender.csvFile.policies.size.size=10MB
appender.csvFile.strategy.type = DefaultRolloverStrategy
appender.csvFile.strategy.max = 200

rootLogger.level = debug
rootLogger.appenderRefs = csvFile
rootLogger.appenderRef.csvFile.ref = CSVFILE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用单个log4j2 xml文件配置log4j2和log4j

来自分类Dev

如何用另一个log4j2配置文件覆盖一个log4j2配置文件?

来自分类Dev

如何从JNDI加载log4j2配置文件

来自分类Dev

使用可执行JAR时指定Log4j2配置文件

来自分类Dev

Log4j2无法使用json配置文件

来自分类Dev

如何在使用Eclipse创建的可运行jar中指定外部log4j2配置文件

来自分类Dev

Log4j2:如何在控制台日志中查找是否已找到日志配置文件

来自分类Dev

如何使用log4j2(xml中的MDC)在不同的文件中写入不同的日志?

来自分类Dev

使用log4j2的Spring Boot。配置log4j2 Spring查找

来自分类Dev

Log4j2:如何为每个用户将日志写入单独的文件?

来自分类Dev

log4j2不使用rollingFile追加器写入日志文件

来自分类Dev

log4j2不使用rollingFile追加器写入日志文件

来自分类Dev

log4j2如何将属性变量从文件读取到log4j2

来自分类Dev

如何在log4j2中配置StatisticsCsvLayout

来自分类Dev

如何检查log4j2是否已配置

来自分类Dev

找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台

来自分类Dev

使用ConfigurationFactory以编程方式配置log4j2

来自分类Dev

Log4j2 - Stackoverflow at AwaitCompletionReliabilityStrategy 使用编程配置

来自分类Dev

Apache CXF 和 Log4j2

来自分类Dev

无法使用从属性文件中动态更改的配置来配置log4j2(v2.5)

来自分类Dev

如何使用Log4j2 xml重写附加程序在登录文件之前修改LogEvent

来自分类Dev

如何将log4j2与不同的日志文件一起使用?

来自分类Dev

Azure功能:使用Log4j2配置Slf4j绑定并将日志发送到appinsights

来自分类Dev

如何在 Web 应用程序之外定义任意文件来配置 log4j2

来自分类Dev

如何使log4j2每个日志调用记录一个文件?

来自分类Dev

如何在log4j2中指定日志文件

来自分类Dev

如何避免在Log4J2中创建空文件?

来自分类Dev

如何在tomcat中设置log4j2文件夹?

来自分类Dev

使用log4j2时日志文件为空

Related 相关文章

  1. 1

    使用单个log4j2 xml文件配置log4j2和log4j

  2. 2

    如何用另一个log4j2配置文件覆盖一个log4j2配置文件?

  3. 3

    如何从JNDI加载log4j2配置文件

  4. 4

    使用可执行JAR时指定Log4j2配置文件

  5. 5

    Log4j2无法使用json配置文件

  6. 6

    如何在使用Eclipse创建的可运行jar中指定外部log4j2配置文件

  7. 7

    Log4j2:如何在控制台日志中查找是否已找到日志配置文件

  8. 8

    如何使用log4j2(xml中的MDC)在不同的文件中写入不同的日志?

  9. 9

    使用log4j2的Spring Boot。配置log4j2 Spring查找

  10. 10

    Log4j2:如何为每个用户将日志写入单独的文件?

  11. 11

    log4j2不使用rollingFile追加器写入日志文件

  12. 12

    log4j2不使用rollingFile追加器写入日志文件

  13. 13

    log4j2如何将属性变量从文件读取到log4j2

  14. 14

    如何在log4j2中配置StatisticsCsvLayout

  15. 15

    如何检查log4j2是否已配置

  16. 16

    找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台

  17. 17

    使用ConfigurationFactory以编程方式配置log4j2

  18. 18

    Log4j2 - Stackoverflow at AwaitCompletionReliabilityStrategy 使用编程配置

  19. 19

    Apache CXF 和 Log4j2

  20. 20

    无法使用从属性文件中动态更改的配置来配置log4j2(v2.5)

  21. 21

    如何使用Log4j2 xml重写附加程序在登录文件之前修改LogEvent

  22. 22

    如何将log4j2与不同的日志文件一起使用?

  23. 23

    Azure功能:使用Log4j2配置Slf4j绑定并将日志发送到appinsights

  24. 24

    如何在 Web 应用程序之外定义任意文件来配置 log4j2

  25. 25

    如何使log4j2每个日志调用记录一个文件?

  26. 26

    如何在log4j2中指定日志文件

  27. 27

    如何避免在Log4J2中创建空文件?

  28. 28

    如何在tomcat中设置log4j2文件夹?

  29. 29

    使用log4j2时日志文件为空

热门标签

归档