项目路径含特殊字符时Logback初始化失败求助
项目路径含特殊字符时Logback初始化失败求助
各位好,我最近碰到一个棘手的问题,想请教下大家的解决思路:
当我的项目安装路径或者工作目录中包含@、¥、%、&这类特殊字符时(比如路径示例:C:\Users\me\Desktop@¥%......&\my-app...),项目启动直接失败,抛出的错误信息如下:
Logging system failed to initialize using configuration from 'null'
java.lang.IllegalStateException: Could not initialize Logback logging from classpath:logback-spring.xml
以下是我当前使用的logback-spring.xml配置文件内容:
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="dm-sql-server"/> <property name="FILE_NAME" value="dm-sql-server" /> <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] [%p]%n%m%n%n" /> <property name="ERROR_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %c{10}.%M:%L-[%p]%n%m%n%n" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <cleanHistoryOnStart>true</cleanHistoryOnStart> <springProfile name="prod"> <MaxHistory>30</MaxHistory> <maxFileSize>20MB</maxFileSize> <totalSizeCap>10GB</totalSizeCap> </springProfile> <springProfile name="!prod"> <MaxHistory>3</MaxHistory> <maxFileSize>20MB</maxFileSize> <totalSizeCap>1GB</totalSizeCap> </springProfile> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <!--设置日志级别,过滤掉info日志,只输入error日志--> <level>ERROR</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}.%i.error.log</FileNamePattern> <cleanHistoryOnStart>true</cleanHistoryOnStart> <springProfile name="prod"> <!--单个文件上限大小--> <!--总日志文件大小上限--> <totalSizeCap>5GB</totalSizeCap> </springProfile> <springProfile name="!prod"> <MaxHistory>7</MaxHistory> <maxFileSize>20MB</maxFileSize> <totalSizeCap>3GB</totalSizeCap> </springProfile> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${ERROR_LOG_PATTERN}</pattern> </encoder> </appender> <springProfile name="prod"> <logger name="org.apache.ibatis" level="WARN" /> <logger name="springfox.documentation.schema.property.CachingModelPropertiesProvider" level="ERROR" /> <logger name="org.mybatis" level="WARN" /> <logger name="com.dm" level="WARN" /> <logger name="com.dm.dsa.DsaApplication" level="INFO" /> <root level="WARN"> <appender-ref ref="FILE" /> <appender-ref ref="ERROR" /> </root> </springProfile> <springProfile name="!prod"> <logger name="org.apache.ibatis" level="INFO" /> <logger name="springfox.documentation.schema.property.CachingModelPropertiesProvider" level="ERROR" /> <logger name="org.mybatis" level="INFO" /> <logger name="com.dm" level="INFO" /> <logger name="com.dm.dsa.websocket.WebSocket" level="INFO" /> <logger name="org.springframework.jdbc.datasource.DataSourceTransactionManager" level="DEBUG" /> <logger name="org.springframework.jdbc.support.JdbcTransactionManager" level="DEBUG" /> <logger name="com.baomidou.dynamic.datasource.tx.LocalTxUtil" level="DEBUG" /> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> <appender-ref ref="ERROR" /> </root> </springProfile> </configuration>
我确认过,这个配置在路径不包含特殊字符时是完全正常工作的,只有当路径带特殊字符时才会触发这个初始化失败的问题。有没有朋友遇到过类似的情况,或者知道该如何调整配置或者做其他处理来解决这个问题呢?
内容来源于stack exchange
相关产品推荐
相关产品推荐

