log4j2的xml、properties配置

 xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d - %c.%M [%t] %p %X{mdc} %x - %m%n" />
        </Console>
        <RollingFile  name="RollingFile" append="true">
            <filename>/export/Logs/ProductStockEs.local/esproduct.log</filename>
            <filePattern>/export/Logs/ProductStockEs.local/esproduct.log.%d{yyyy-MM-dd}</filePattern>
            <PatternLayout>
                <Pattern>%d - %c.%M [%t] %p %X{mdc} %x - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile >
    </Appenders>
    <Loggers>
        <!-- 业务日志 -->
        <logger name="com.jw.es" level="INFO"/>
        
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

properties配置

 

status = off
name = PropertiesConfig
### console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d - %c.%M [%t] %p %X{mdc} %x - %m%n

### RollingFile
appender.rolling.type = RollingFile
appender.rolling.name = FILE
appender.rolling.append = true
appender.rolling.fileName = @logpath@
appender.rolling.filePattern = @logPattern@
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d - %c.%M [%t] %p %X{mdc} %x - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true

### logger
logger.rolling.name = com.jd.wj.es
logger.rolling.level = INFO
logger.rolling.additivity = true
logger.rolling.appenderRef.rolling.ref = FILE

### rootLogger
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT

这个配置功能是一样的。

注意一点:logger.rolling.additivity = true的作用是将该logger日志在控制台也打印,如果是false,则只会打印到esproduct.log文件中。

@filename@是通过maven打进去的。

 

吐槽log4j2:

文档写的不好,好多配置都是慢慢碰出来的。尤其是对log4j配置不了的前提下。

关于日志路径配置问题,刚开始是通过log4j2.xml进行配置,无法配置dev、stage、prod不同环境的日志路径。官方给出了一些方案,比如可以通过ctx、env、sys等配置,但是问题来了,通过env配置会导致项目可读性差,放弃;想通过sys配置,将sys通过spring进行注入,但是特么log4j2的启动要比spring快,导致需要这个配置时没有,不知道如何让log4j2的初始化比spring晚,放弃。想到可以使用properties,路径通过maven打进去,就是@filename@的作用。

整体感觉log4j2的易用性比较低,性能可能好,但是切换起来比较麻烦,不如logback好配置。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值