log4j无代码改动升级到log4j2 原properties改造

背景:
log4j 1.x 版本存在严重漏洞,一些老系统仍然使用的是log4j ,需要升级
方式:
1.原有的 log4j 移除
2.加入依赖

	这两个是必须要使用的依赖
		<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.16.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.16.0</version>
        </dependency>
	这个依赖可以不必修改原有的代码,用于1.x版本升级到2.x
		<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>2.16.0</version>
            <scope>test</scope>
        </dependency>

3.配置文件需要修改
xml格式不多赘述,网上有很多
properties格式的较少,这里贴一下相关的语法

#用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
status = debug
dest = err
name = PropertiesConfig

#日志文件名称
property.filename = d:/logs/rollingtest.log
#日志文件内容的格式,说明:
#%n-换行
#%m-日志内容
#%p-日志级别(FATAL,ERROR,WARN...)
#%F-java源文件名
#%t 输出产生该日志事件的线程名
#%d 输出日志时间点的日期或时间
#%L-java源码行数
#%C-java类名
#%M-java方法名
#%l-输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
property.layoutPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS} %p %c %m%n

# 级别过滤(过滤日志记录)
filter.threshold.type = ThresholdFilter
# 只记录debug级别以上的日志,大小写无关:(ALL<)TRACE<DEBUG<INFO<WARN<ERROR<FATAL(<OFF)
filter.threshold.level = debug

# 控制台类型的日志输出源
appender.console.type = Console
# 输出源的名称
appender.console.name = STDOUT
#输出类型
appender.console.target = SYSTEM_OUT
# 输出布局类型
appender.console.layout.type = PatternLayout
# 输出模板
appender.console.layout.pattern = ${layoutPattern}

# 文件日志输出源
appender.rolling.type = RollingFile
#输入源名称
appender.rolling.name = RollingFile
#日志文件名
appender.rolling.fileName = ${filename}
#指定当发生文件滚动时,文件重命名规则
appender.rolling.filePattern = d:/logs/test1-%d{yyyyMMdd}-%i.log
# 滚动记录输出源布局类型
appender.rolling.layout.type = PatternLayout
# 输出模板
appender.rolling.layout.pattern = ${layoutPattern}
# 指定记录文件的保存策略,该策略主要是完成周期性的日志文件保存工作
appender.rolling.policies.type = Policies
# 基于时间的触发策略(TriggeringPolicy)
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 当前记录周期为每2秒生成一个文件,如果filePattern中配置的文件重命名规则是test1-%d{yyyy-MM-dd HH-mm}-%i,
#最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每2分钟生成一个新文件。
#如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每2个小时生成一个文件。
appender.rolling.policies.time.interval = 2
# 是否对保存时间进行限制。若modulate=true,则保存时间将以0点为边界进行偏移计算。
#比如,modulate=true,interval=4hours,
#那么假设上次保存日志的时间为03:00,则下次保存日志的时间为04:00,之后的保存时间依次为08:00,12:00,16:00
appender.rolling.policies.time.modulate = true
# 基于日志文件大小的触发策略
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
# 当日志文件大小大于size指定的值时,触发滚动
appender.rolling.policies.size.size=100MB
# 文件保存的覆盖策略
appender.rolling.strategy.type = DefaultRolloverStrategy
# 生成分割(保存)文件的个数,默认为5(-1,-2,-3,-4,-5)
appender.rolling.strategy.max = 5


# 记录器名称
logger.rolling.name = XXX
# 设置日志级别
logger.rolling.level = debug
# 是否向上级logger传递信息
logger.rolling.additivity = true

# 关联名称为RollingFile的输出源(appender)
logger.rolling.appenderRef.rolling.ref = RollingFile


#设置SpringFramework框架的日志级别,一般业务上不需要其它使用了log4j的框架输出日志
logger.SpringFramework.name = org.springframework
logger.SpringFramework.level = INFO

#当有其它框架的也使用了log4j时,会输出相应日志,以下方式为屏蔽其它框架的日志信息(设置日志级别)
#logger.Http.name = org.apache.http
#logger.Http.level = TRACE


# 根记录器,所有记录器的父辈
rootLogger.level = debug

# 关联名称为STDOUT的输出源(appender)
rootLogger.appenderRef.stdout.ref = STDOUT

rootLogger.appenderRef.rolling.ref = RollingFile

遇到的一些问题:

	# 关联名称为RollingFile的输出源(appender)
	logger.rolling.appenderRef.rolling.ref = RollingFile

此处的配置并没有如预期想象的那样,去生成日志文件
而是通过以下方式生成了,即绑定在rootLogger下

rootLogger.appenderRef.rolling.ref = RollingFile

问题暂留。。。日后再深入研究一下

附上官方链接:https://logging.apache.org/log4j/2.x/manual/migration.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值