log4j2自定义参数动态打印到日志中,解决配置文件只能写死参数的问题

时间:2024-10-13 07:29:59
#log4j系统参数,不用动 status = error #修改控制台日志级别,打包前改成fatal,TRACE < DEBUG < INFO < WARN < ERROR < FATAL property.CONSOLE_LOG_LEVEL=info #日志文件保存路径需根据工程部署位置修改路径 property.LOG_HOME=/app/elk/logs/ #log4jProperties里的参数,通过这种方式获取 property.envir=${sys:envir} property.appName=${sys:appName} property.fileNameMd5=${sys:fileNameMd5} property.rechargeEnv=${sys:rechargeEnv} #系统日志级别不用动 property.OUTPUT_LOG_LEVEL=trace property.BACKUP_HOME=backup property.EVERY_FILE_SIZE=10M property.FILE_MAX=10 # 日志要发到什么地方,控制台 appender.console.type = Console # 本appender的名字,以便在Logger的配置项中能够调用 appender.console.name = STDOUT #过滤器,过滤日志的级别 appender.console.filter.threshold.level = ${CONSOLE_LOG_LEVEL} #过滤类型 appender.console.filter.threshold.type = ThresholdFilter # 输出格式类型 appender.console.layout.type = PatternLayout # 输出格式,不设置默认为 %m%n appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %5p ${appName} ${envir} %c{1}:%L - %m%n # 采用RollingFile类型的Appender appender.rollingFile.type=RollingFile # 本appender的名字,以便在Logger的配置项中能够调用 appender.rollingFile.name=RollingFileAll #过滤器,过滤日志的级别,可根据要保存的日志级别修改,建议不动 appender.rollingFile.filter.threshold.level = info #过滤类型 appender.rollingFile.filter.threshold.type = ThresholdFilter # 当前正在操作的日志文件的文件名 appender.rollingFile.fileName=${LOG_HOME}/${appName}_new_${fileNameMd5}.log # 归档后的日志文件的文件名格式,其中`%d{yyyy-MM-dd}`用来自动填充日期,这里配置到天就是按天归档,配置到小时就是按小时归档 appender.rollingFile.filePattern=${LOG_HOME}/${appName}_old_${fileNameMd5}.log.%d{yyyy-MM-dd} # 启用Layout配置 appender.rollingFile.layout.type=PatternLayout # 对应输出的每条日志的日志头 appender.rollingFile.layout.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p ${appName} ${envir} %c{1}:%L - %m%n # 启用Policy配置,指定滚动日志的策略 appender.rollingFile.policies.type=Policies # 基于时间进行日志的切割,根据filePattern配置的日期格式而定 appender.rollingFile.policies.time.type=TimeBasedTriggeringPolicy # 切割的间隔单位为1, 根据filePattern配置的日期格式归档 appender.rollingFile.policies.time.interval=1 # 修正时间范围,0时开始计数 appender.rollingFile.policies.time.modulate=true #基于文件大小进行日志的切割 #appender.rolling.policies.size.type=SizeBasedTriggeringPolicy #文件大小 #appender.rolling.policies.size.size=${EVERY_FILE_SIZE} #配置Strategy用来删除过多的日志归档文件 #appender.rolling.strategy.type=DefaultRolloverStrategy #错误日志配置 appender.error.type=RollingFile appender.error.name=RollingFileError appender.error.filter.threshold.level = error appender.error.filter.threshold.type = ThresholdFilter appender.error.fileName=${LOG_HOME}/error/${appName}/${appName}_error_${fileNameMd5}.log appender.error.filePattern=${LOG_HOME}/error/${appName}/history/${appName}_old_error_${fileNameMd5}.log.%d{yyyy-MM-dd} appender.error.layout.type=PatternLayout appender.error.layout.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p ${appName} ${envir} %c{1}:%L - %m%n appender.error.policies.type=Policies appender.error.policies.time.type=TimeBasedTriggeringPolicy appender.error.policies.time.interval=1 appender.error.policies.time.modulate=true #appender.error.policies.size.type=SizeBasedTriggeringPolicy #appender.error.policies.size.size=${EVERY_FILE_SIZE} #appender.error.strategy.type=DefaultRolloverStrategy # 用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点。一般是项目包名或者框架的包名,单独对这个处理 #logger.activity.name = com.cu.indenture.config # 设置日志级别 #logger.activity.level = debug # 是否向上级logger传递信息 #logger.activity.additivity = false # 关联名称为RollingFileAll的输出源(appender) #logger.activity.appenderRef.all.ref = RollingFileAll #logger.activity.appenderRef.error.ref = RollingFileError #logger.activity.appenderRef.stdout.ref = STDOUT #日志级别,不用动 rootLogger.level = ${OUTPUT_LOG_LEVEL} #用来指定该日志输出到哪个 Appender rootLogger.appenderRef.stdout.ref = STDOUT #用来指定该日志输出到哪个 Appender rootLogger.appenderRef.all.ref = RollingFileAll #用来指定该日志输出到哪个 Appender rootLogger.appenderRef.error.ref = RollingFileError