【Java】系统不到指定路径
报错信息:
2021-05-26 13:50:11,737 RMI TCP Connection(3)-127.0.0.1 ERROR DefaultRolloverStrategy contains an invalid element or attribute "maxDepth"
2021-05-26 13:50:11,745 RMI TCP Connection(3)-127.0.0.1 ERROR Unable to create file e:/log/dmscc/repair/repair.log java.io.IOException: 系统不到指定的路径。    at java.ateFileExclusively(Native Method)
at java.ateNewFile(File.java:1012)
at org.apache.lling.ateManager(RollingFileManager.java:525)
线索是log相关,到了Log4J的XML配置⽂件:
配置描述:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %5p [%C{1}:%L] - %m%n"/>
</Console>
<RollingFile name="RollingFile" fileName="${LOG_HOME.DIR}/repair/repair.log"
filePattern="${LOG_HOME.DIR}/repair/repair-%d{yyyy-MM-dd}-%">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %5p [%C{1}:%L] - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"  modulate="true"/>
<SizeBasedTriggeringPolicy size="50 MB"/>
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
</Policies>
<DefaultRolloverStrategy maxDepth="100" max="200">
<Delete basePath="${LOG_HOME.DIR}/repair" maxDepth="2">
<IfFileName glob="repair-*."/>
<IfLastModified age="45d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="u.dms" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="s" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="u.dmsgms" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Root level="info">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
和报错信息对⽐发现是这⼀段配置描述:
<RollingFile name="RollingFile" fileName="${LOG_HOME.DIR}/repair/repair.log"
原因:
这个项⽬的路径是默认到E盘下⾯去输出的,但是我没有E盘啊
解决⽅案也就两种:log4j2xml配置
⼀、我从已有的盘中开个新分区划分给E盘,这样⽇志能到盘符输出了
⼆、我不想分盘,直接更改⽇志的输出路径,但是这个是动态指定的,于是我就写死指定到某⼀个位置
所以还是改了⽇志配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %5p [%C{1}:%L] - %m%n"/> </Console>
<!--        <RollingFile name="RollingFile" fileName="${LOG_HOME.DIR}/repair/repair.log"--> <!--filePattern="${LOG_HOME.DIR}/repair/repair-%d{yyyy-MM-dd}-%">-->
<RollingFile name="RollingFile" fileName="d:/log/dmscc/repair/repair.log"
filePattern="d:/log/dmscc/repair/repair-%d{yyyy-MM-dd}-%">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %5p [%C{1}:%L] - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"  modulate="true"/>
<SizeBasedTriggeringPolicy size="50 MB"/>
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
</Policies>
<DefaultRolloverStrategy maxDepth="100" max="200">
<!--<Delete basePath="${LOG_HOME.DIR}/repair" maxDepth="2">-->
<Delete basePath="d:/log/dmscc/repair" maxDepth="2">
<IfFileName glob="repair-*."/>
<IfLastModified age="45d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="u.dms" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="s" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="u.dmsgms" level="debug" additivity="false">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Logger>
<Root level="info">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
他写了三个,我上⾯只更改了第⼀个路径再跑项⽬就能起来
其他两个的左右没有搞懂是⼲嘛的,⼲脆也跟着改掉了