做网站服务器系统,郑州网站建设智巢,公众号搭建第三方平台,中国建设网站培训通知一、log4j2 日志由xml配置#xff0c;如果想改日志路径#xff0c; 没办法和application.prop 文件读取参数
处理解决办法
二、1、默认解决办法
xml配置死路径#xff0c;且测试与生产保持一致
?xml version1.0 encodingUTF-8?
!…一、log4j2 日志由xml配置如果想改日志路径 没办法和application.prop 文件读取参数
处理解决办法
二、1、默认解决办法
xml配置死路径且测试与生产保持一致
?xml version1.0 encodingUTF-8?
!--Configuration后面的status这个用于设置log4j2自身内部的信息输出可以不设置当设置成trace时你会看到log4j2内部各种详细输出--
!--monitorIntervalLog4j能够自动检测修改配置 文件和重新配置本身设置间隔秒数--
configuration monitorInterval5
!-- 读取自定义日志路径--!--日志级别以及优先级排序: OFF FATAL ERROR WARN INFO DEBUG TRACE ALL --!--变量配置--Properties!-- 格式化输出%date表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符--!-- %logger{36} 表示 Logger 名字最长36个字符 --property nameLOG_PATTERN value%date{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n /!-- 定义日志存储的路径 --property nameFILE_PATH value/dataLogFile/patcher /property nameFILE_NAME valuepatcher //Propertiesappendersconsole nameConsole targetSYSTEM_OUT!--输出日志的格式--PatternLayout pattern${LOG_PATTERN}/!--控制台只输出level及其以上级别的信息onMatch其他的直接拒绝onMismatch--ThresholdFilter leveltrace onMatchACCEPT onMismatchDENY//console!-- 这个会打印出所有的info及以下级别的信息每次大小超过size则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩作为存档--RollingFile nameRollingFileInfo fileName${FILE_PATH}/info.log filePattern${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch--ThresholdFilter levelinfo onMatchACCEPT onMismatchDENY/PatternLayout pattern${LOG_PATTERN}/Policies!--interval属性用来指定多久滚动一次默认是1 hour--TimeBasedTriggeringPolicy interval1/SizeBasedTriggeringPolicy size100MB//Policies!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖--DefaultRolloverStrategy max10//RollingFile!-- 这个会打印出所有的warn及以下级别的信息每次大小超过size则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩作为存档--RollingFile nameRollingFileWarn fileName${FILE_PATH}/warn.log filePattern${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch--ThresholdFilter levelwarn onMatchACCEPT onMismatchDENY/PatternLayout pattern${LOG_PATTERN}/Policies!--interval属性用来指定多久滚动一次默认是1 hour--TimeBasedTriggeringPolicy interval1/SizeBasedTriggeringPolicy size100MB//Policies!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖--DefaultRolloverStrategy max10//RollingFile!-- 这个会打印出所有的error及以下级别的信息每次大小超过size则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩作为存档--RollingFile nameRollingFileError fileName${FILE_PATH}/error.log filePattern${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch--ThresholdFilter levelerror onMatchACCEPT onMismatchDENY/PatternLayout pattern${LOG_PATTERN}/Policies!--interval属性用来指定多久滚动一次默认是1 hour--TimeBasedTriggeringPolicy interval1/SizeBasedTriggeringPolicy size100MB//Policies!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件开始覆盖--DefaultRolloverStrategy max10//RollingFile/appenders!--Logger节点用来单独指定日志的形式比如要为指定包下的class指定不同的日志级别等。--!--然后定义loggers只有定义了logger并引入的appenderappender才会生效--loggers!--过滤掉spring和mybatis的一些无用的DEBUG信息 --logger nameorg.mybatis levelinfo additivityfalseAppenderRef refConsole//logger!--监控系统信息--!--若是additivity设为false则 子Logger 只会在自己的appender里输出而不会在 父Logger 的appender里输出。--Logger nameorg.springframework levelinfo additivityfalseAppenderRef refConsole//Loggerroot levelinfoappender-ref refConsole/
!-- appender-ref refFilelog/--appender-ref refRollingFileInfo/appender-ref refRollingFileWarn/appender-ref refRollingFileError//root/loggers/configuration
二、通过系统环境变量读取application.prop属性提前加载在监听器前启动应用前加载即可
System.setProperty 用于springboot项目①在application.properties 或者application.yml文件中配置
patcher.log/data350/fengqxLogFile/patcher②配置前置加载方法
在项目/src/main/resources/META-INF/spring.factories
org.springframework.context.ApplicationListenercom.longze.patcher.listener.MyLoggerListener
③增加监听器文件
com.longze.patcher.listener /*** author Fengqx* version 1.0* description: 日志配置文件加载监听器* date 2023/7/29 19:06*/
Component
public class LoggerListener implements ApplicationListenerApplicationEvent, Ordered {Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent) {if (applicationEvent instanceof ApplicationEnvironmentPreparedEvent) {ConfigurableEnvironment environment ((ApplicationEnvironmentPreparedEvent) applicationEvent).getEnvironment();String filePath environment.getProperty(patcher.log);if (StringUtils.isNotEmpty(filePath)) {System.err.println( filePath);System.setProperty(patcher.log, filePath);}}}Overridepublic int getOrder() {// 当前监听器的启动顺序需要在日志配置监听器的前面所以此处减 1return LoggingApplicationListener.DEFAULT_ORDER - 1;}
}④在log4jx.xml 使用该路径 !--变量配置--Properties!-- 格式化输出%date表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符--!-- %logger{36} 表示 Logger 名字最长36个字符 --property nameLOG_PATTERN value%date{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n /!-- 定义日志存储的路径 --property nameFILE_PATH value${sys:patcher.log} /property nameFILE_NAME valuedispatcher //Properties 三、配置完成此后可以在启动命令 加上如下命令可以指定日志文件
-Dpatcher.log/data1/fengqxLogFile/patcher
四、java -nohup 启动命令会生成nohup文件太大怎么办
将生成文件放到其他路径
启动命令如下
nohup java tianmao.jar -jar pwd/*jar /data1/fengqx/nohup.out
如果不想生成nohup文件扔到黑洞中去
nohup java -jar /usr/local/jar/test.jar /dev/null 21