You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

项目路径含特殊字符时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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:38:07