PlayFramework 2.5 配置日志

本文介绍了Play2.5框架中日志系统的配置方法,包括默认配置、生产环境配置及自定义配置等内容,还提供了如何配置日志文件、使用异步追加器等实用技巧。

Play 2.5 配置日志

 

Play 使用log4j 作为日志,使用logback 作为日志引擎,可以查看 logback 的官网文档,了解详细配置:http://logback.qos.ch/manual/configuration.html

 

 

默认配置

1.在开发中,我们使用如下配置

 

<!--
  ~ Copyright (C) 2009-2016 Lightbend Inc. <https://www.lightbend.com>
  -->
<!-- The default logback configuration that Play uses in dev mode if no other configuration is provided -->
<configuration>
 
  <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" />
 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%coloredLevel %logger{15} - %message%n%xException{10}</pattern>
    </encoder>
  </appender>
 
  <logger name="play" level="INFO" />
  <logger name="application" level="DEBUG" />
 
  <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />
 
  <root level="WARN">
    <appender-ref ref="STDOUT" />
  </root>
 
</configuration>

 

 

2.在生产环境中,我们使用如下配置:

 

<!--

  ~Copyright (C) 2009-2016 Lightbend Inc. <https://www.lightbend.com>

 -->

<!-- The default logback configurationthat Play uses if no other configuration is provided -->

<configuration>

 

  <conversionRule conversionWord="coloredLevel" converterClass="play.api.libs.logback.ColoredLevel" />

 

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

    <encoder>

      <pattern>%coloredLevel %logger{15} -%message%n%xException{10}</pattern>

    </encoder>

  </appender>

 

  <appender name="ASYNCSTDOUT" class="ch.qos.logback.classic.AsyncAppender">

    <appender-ref ref="STDOUT" />

  </appender>

 

  <logger name="play" level="INFO" />

  <logger name="application" level="INFO" />

 

  <logger name="com.gargoylesoftware.htmlunit.javascript" level="OFF" />

 

  <root level="WARN">

    <appender-ref ref="ASYNCSTDOUT" />

  </root>

 

</configuration>

 

3.关于这些配置,需要注意以下几项

         1. 这些默认的配置,仅仅指定了在控制台输出10行栈异常

         2. 用不同颜色的代码定义异常信息的级别

         3. 在生产环境,默认的配置被定义在了logback的控制台,参见文档:http://logback.qos.ch/manual/appenders.html#AsyncAppender,有关性能影响的详细信息,请参加如下文档:https://blog.takipi.com/how-to-instantly-improve-your-java-logging-with-7-logback-tweaks/

 

4.生成日志文件,可在你的logback.xml 文件中添加如下信息

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${application.home:-.}/logs/application.log</file>
    <encoder>
        <pattern>%date [%level] from %logger in %thread - %message%n%xException</pattern>
    </encoder>
</appender>

 

 

5.(可选)使用异步的追加器

<appender name="ASYNCFILE" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="FILE" />
</appender>

 

6.将必要的,附加程序添加到根

<root level="WARN">
    <appender-ref ref="ASYNCFILE" />
    <appender-ref ref="ASYNCSTDOUT" />
</root>

 

 

使用自定义加载器

请注意,当使用不扩展默认GuiceApplicationLoader的自定义应用程序加载器时(例如,当使用编译时依赖注入时),需要手动调用LoggerConfigurator来拾取您的自定义配置。您可以使用下面的代码:

class MyApplicationLoaderWithInitialization extends ApplicationLoader {
  def load(context: Context) = {
    LoggerConfigurator(context.environment.classLoader).foreach {
      _.configure(context.environment)
    }
    new MyComponents(context).application
  }
}

 

 

自定义配置

对于任何的自定义配置,都需要指定你自己的 logback 配置

 

1.使用源项目中的配置文件

你可以通过提供一个 logback.xml文件来提供默认日志记录配置

 

2.使用外部配置文件

你也可以通过系统属性,指定配置文件。这对于可以在应用程序源之外管理配置文件的生产环境特别有用。

 

注意:日志记录系统首先指定由系统属性指定的配置文件,其次指向conf目录中的文件,最后指定为默认值。这允许您自定义应用程序的日志记录配置,并仍然覆盖特定环境或开发人员设置。

 

 

使用 -Dlogger.resource

从类路径指定要加载的配置文件     $ start -Dlogger.resource=prod-logger.xml

 

 

使用 -Dlogger.file

指定从文件系统中加载的配置文件     $ start -Dlogger.file=/opt/prod/logger.xml

 

 

3.例子

使用滚动的文件追加器配置

 

<configuration>
 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/web/logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- Daily rollover with compression -->
            <fileNamePattern>application-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- keep 30 days worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} [%level] from %logger in %thread - %message%n%xException</pattern>
        </encoder>
    </appender>
 
    <appender name="ACCESS_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.dir}/web/logs/access.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover with compression -->
            <fileNamePattern>access-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!-- keep 1 week worth of history -->
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} %message%n</pattern>
            <!-- this quadruples logging throughput -->
            <immediateFlush>false</immediateFlush>
        </encoder>
    </appender>
 
    <!-- additivity=false ensures access log data only goes to the access log -->
    <logger name="access" level="INFO" additivity="false">
        <appender-ref ref="ACCESS_FILE" />
    </logger>
 
    <root level="INFO">
        <appender-ref ref="FILE"/>
    </root>
 
</configuration>

 

 

这演示了一些有用的功能:

 

它使用RollingFileAppender,它可以帮助管理日益增长的日志文件。

它将日志文件写入应用程序外部的目录,以便它们不受升级等影响。

这个文件追加器使用扩展的消息格式,可以由第三方日志分析提供程序(如Sumo Logic)解析。

访问记录器使用ACCESS_FILE_APPENDER路由到单独的日志文件。

所有记录器都设置为INFO的阈值,INFO是生产日志记录的常用选项。

 

 

Akka 日志配置

Akka系统日志记录可以通过将akka记录器更改为INFO来完成。

 

<!-- Set logging for all Akka library classes to INFO -->
<logger name="akka" level="INFO" />
<!-- Set a specific actor to DEBUG -->
<logger name="actors.MyActor" level="DEBUG" />

 

 

您还可以为Akka记录器配置包含有用属性(例如线程和actor地址)的追加器。有关配置Akka日志记录的更多信息,包括Logback和Slf4j集成的详细信息,请参阅Akka文档。

http://doc.akka.io/docs/akka/current/scala/logging.html

 

 

使用自定义日志框架

 

Play默认使用logback作为日志框架,但是也可以通过配置使Play使用另外一些符合 slf4j 适配器的的日志框架。要做到这一点,PlayLogback SBT插件必须通过disablePlugins禁用:

lazy val root = (project in file("."))
  .enablePlugins(PlayScala)
  .disablePlugins(PlayLogback)

 

 

上边介绍了一个自定义框架的使用,下边介绍log4j 使用例子:

libraryDependencies ++= Seq(
  "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.4.1",
  "org.apache.logging.log4j" % "log4j-api" % "2.4.1",
  "org.apache.logging.log4j" % "log4j-core" % "2.4.1"
)

 

 

加载库和SLF4J适配器后,可以像通常一样在命令行上设置log4j.configurationFile系统属性。

 

如果在Play做需要的模式上自定义,你可以使用LoggerConfigurator 进行其他的定义,为此可以添加一个 logger-configurator.properties classpath 下:

 

play.logger.configurator=Log4J2LoggerConfigurator

 

然后可以扩展LoggerConfigurator  做一些自定义

import java.io.File
import java.net.URL
 
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.core._
import org.apache.logging.log4j.core.config.Configurator
 
import play.api.{Mode, Environment, LoggerConfigurator}
 
class Log4J2LoggerConfigurator extends LoggerConfigurator {
 
  override def init(rootPath: File, mode: Mode.Mode): Unit = {
    val properties = Map("application.home" -> rootPath.getAbsolutePath)
    val resourceName = if (mode == Mode.Dev) "log4j2-dev.xml" else "log4j2.xml"
    val resourceUrl = Option(this.getClass.getClassLoader.getResource(resourceName))
    configure(properties, resourceUrl)
  }
 
  override def shutdown(): Unit = {
    val context = LogManager.getContext().asInstanceOf[LoggerContext]
    Configurator.shutdown(context)
  }
 
  override def configure(env: Environment): Unit = {
    val properties = Map("application.home" -> env.rootPath.getAbsolutePath)
    val resourceUrl = env.resource("log4j2.xml")
    configure(properties, resourceUrl)
  }
 
  override def configure(properties: Map[String, String], config: Option[URL]): Unit = {
    val context =  LogManager.getContext(false).asInstanceOf[LoggerContext]
    context.setConfigLocation(config.get.toURI)
  }
}

 

"C:\Program Files\Java\jdk1.8.0_351\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:D:\IntelliJ IDEA 2024.2.4\lib\idea_rt.jar=52913:D:\IntelliJ IDEA 2024.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_351\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_351\jre\lib\rt.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-admin\target\classes;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-devtools\2.5.15\spring-boot-devtools-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot\2.5.15\spring-boot-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\spring-core\5.3.39\spring-core-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-jcl\5.3.39\spring-jcl-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-context\5.3.39\spring-context-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-expression\5.3.39\spring-expression-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.15\spring-boot-autoconfigure-2.5.15.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-boot-starter\3.0.0\springfox-boot-starter-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-oas\3.0.0\springfox-oas-3.0.0.jar;C:\Users\33042\.m2\repository\io\swagger\core\v3\swagger-annotations\2.1.2\swagger-annotations-2.1.2.jar;C:\Users\33042\.m2\repository\io\swagger\core\v3\swagger-models\2.1.2\swagger-models-2.1.2.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-spi\3.0.0\springfox-spi-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-schema\3.0.0\springfox-schema-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-core\3.0.0\springfox-core-3.0.0.jar;C:\Users\33042\.m2\repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-spring-web\3.0.0\springfox-spring-web-3.0.0.jar;C:\Users\33042\.m2\repository\io\github\classgraph\classgraph\4.8.83\classgraph-4.8.83.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-spring-webmvc\3.0.0\springfox-spring-webmvc-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-spring-webflux\3.0.0\springfox-spring-webflux-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-swagger-common\3.0.0\springfox-swagger-common-3.0.0.jar;C:\Users\33042\.m2\repository\org\mapstruct\mapstruct\1.3.1.Final\mapstruct-1.3.1.Final.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-data-rest\3.0.0\springfox-data-rest-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-bean-validators\3.0.0\springfox-bean-validators-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-swagger2\3.0.0\springfox-swagger2-3.0.0.jar;C:\Users\33042\.m2\repository\io\springfox\springfox-swagger-ui\3.0.0\springfox-swagger-ui-3.0.0.jar;C:\Users\33042\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\33042\.m2\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;C:\Users\33042\.m2\repository\org\springframework\plugin\spring-plugin-core\2.0.0.RELEASE\spring-plugin-core-2.0.0.RELEASE.jar;C:\Users\33042\.m2\repository\org\springframework\spring-beans\5.3.39\spring-beans-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-aop\5.3.39\spring-aop-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\plugin\spring-plugin-metadata\2.0.0.RELEASE\spring-plugin-metadata-2.0.0.RELEASE.jar;C:\Users\33042\.m2\repository\io\swagger\swagger-models\1.6.2\swagger-models-1.6.2.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.7\jackson-annotations-2.12.7.jar;C:\Users\33042\.m2\repository\io\swagger\swagger-annotations\1.6.2\swagger-annotations-1.6.2.jar;C:\Users\33042\.m2\repository\com\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-framework\target\classes;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.5.15\spring-boot-starter-web-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter\2.5.15\spring-boot-starter-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.5.15\spring-boot-starter-logging-2.5.15.jar;C:\Users\33042\.m2\repository\ch\qos\logback\logback-classic\1.2.13\logback-classic-1.2.13.jar;C:\Users\33042\.m2\repository\ch\qos\logback\logback-core\1.2.13\logback-core-1.2.13.jar;C:\Users\33042\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;C:\Users\33042\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;C:\Users\33042\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\33042\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.5.15\spring-boot-starter-json-2.5.15.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.7\jackson-datatype-jdk8-2.12.7.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.7\jackson-datatype-jsr310-2.12.7.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.7\jackson-module-parameter-names-2.12.7.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.15\spring-boot-starter-tomcat-2.5.15.jar;C:\Users\33042\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.96\tomcat-embed-core-9.0.96.jar;C:\Users\33042\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.96\tomcat-embed-el-9.0.96.jar;C:\Users\33042\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.96\tomcat-embed-websocket-9.0.96.jar;C:\Users\33042\.m2\repository\org\springframework\spring-web\5.3.39\spring-web-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-webmvc\5.3.39\spring-webmvc-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.5.15\spring-boot-starter-aop-2.5.15.jar;C:\Users\33042\.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\33042\.m2\repository\com\alibaba\druid-spring-boot-starter\1.2.23\druid-spring-boot-starter-1.2.23.jar;C:\Users\33042\.m2\repository\com\alibaba\druid\1.2.23\druid-1.2.23.jar;C:\Users\33042\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.8\jaxb-runtime-2.3.8.jar;C:\Users\33042\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\33042\.m2\repository\org\glassfish\jaxb\txw2\2.3.8\txw2-2.3.8.jar;C:\Users\33042\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.12\istack-commons-runtime-3.0.12.jar;C:\Users\33042\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\33042\.m2\repository\pro\fessional\kaptcha\2.3.3\kaptcha-2.3.3.jar;C:\Users\33042\.m2\repository\com\jhlabs\filters\2.0.235-1\filters-2.0.235-1.jar;C:\Users\33042\.m2\repository\com\github\oshi\oshi-core\6.6.5\oshi-core-6.6.5.jar;C:\Users\33042\.m2\repository\net\java\dev\jna\jna\5.15.0\jna-5.15.0.jar;C:\Users\33042\.m2\repository\net\java\dev\jna\jna-platform\5.15.0\jna-platform-5.15.0.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-system\target\classes;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-quartz\target\classes;C:\Users\33042\.m2\repository\org\quartz-scheduler\quartz\2.3.2\quartz-2.3.2.jar;C:\Users\33042\.m2\repository\com\mchange\mchange-commons-java\0.2.15\mchange-commons-java-0.2.15.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-common\target\classes;C:\Users\33042\.m2\repository\org\springframework\spring-context-support\5.3.39\spring-context-support-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-security\2.5.15\spring-boot-starter-security-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\security\spring-security-config\5.7.12\spring-security-config-5.7.12.jar;C:\Users\33042\.m2\repository\org\springframework\security\spring-security-web\5.7.12\spring-security-web-5.7.12.jar;C:\Users\33042\.m2\repository\com\github\pagehelper\pagehelper-spring-boot-starter\1.4.7\pagehelper-spring-boot-starter-1.4.7.jar;C:\Users\33042\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.3.1\mybatis-spring-boot-starter-2.3.1.jar;C:\Users\33042\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.3.1\mybatis-spring-boot-autoconfigure-2.3.1.jar;C:\Users\33042\.m2\repository\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;C:\Users\33042\.m2\repository\org\mybatis\mybatis-spring\2.1.1\mybatis-spring-2.1.1.jar;C:\Users\33042\.m2\repository\com\github\pagehelper\pagehelper-spring-boot-autoconfigure\1.4.7\pagehelper-spring-boot-autoconfigure-1.4.7.jar;C:\Users\33042\.m2\repository\com\github\pagehelper\pagehelper\5.3.3\pagehelper-5.3.3.jar;C:\Users\33042\.m2\repository\com\github\jsqlparser\jsqlparser\4.5\jsqlparser-4.5.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-validation\2.5.15\spring-boot-starter-validation-2.5.15.jar;C:\Users\33042\.m2\repository\org\hibernate\validator\hibernate-validator\6.2.5.Final\hibernate-validator-6.2.5.Final.jar;C:\Users\33042\.m2\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;C:\Users\33042\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.12.7.1\jackson-databind-2.12.7.1.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.12.7\jackson-core-2.12.7.jar;C:\Users\33042\.m2\repository\com\baomidou\dynamic-datasource-spring-boot-starter\3.5.2\dynamic-datasource-spring-boot-starter-3.5.2.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.5.15\spring-boot-starter-jdbc-2.5.15.jar;C:\Users\33042\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\33042\.m2\repository\com\alibaba\fastjson2\fastjson2\2.0.53\fastjson2-2.0.53.jar;C:\Users\33042\.m2\repository\commons-io\commons-io\2.13.0\commons-io-2.13.0.jar;C:\Users\33042\.m2\repository\org\apache\poi\poi-ooxml\4.1.2\poi-ooxml-4.1.2.jar;C:\Users\33042\.m2\repository\org\apache\poi\poi\4.1.2\poi-4.1.2.jar;C:\Users\33042\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;C:\Users\33042\.m2\repository\com\zaxxer\SparseBitSet\1.2\SparseBitSet-1.2.jar;C:\Users\33042\.m2\repository\org\apache\poi\poi-ooxml-schemas\4.1.2\poi-ooxml-schemas-4.1.2.jar;C:\Users\33042\.m2\repository\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;C:\Users\33042\.m2\repository\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;C:\Users\33042\.m2\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;C:\Users\33042\.m2\repository\io\jsonwebtoken\jjwt\0.9.1\jjwt-0.9.1.jar;C:\Users\33042\.m2\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;C:\Users\33042\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-starter-data-redis\2.5.15\spring-boot-starter-data-redis-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\data\spring-data-redis\2.5.12\spring-data-redis-2.5.12.jar;C:\Users\33042\.m2\repository\org\springframework\data\spring-data-keyvalue\2.5.12\spring-data-keyvalue-2.5.12.jar;C:\Users\33042\.m2\repository\org\springframework\data\spring-data-commons\2.5.12\spring-data-commons-2.5.12.jar;C:\Users\33042\.m2\repository\org\springframework\spring-oxm\5.3.39\spring-oxm-5.3.39.jar;C:\Users\33042\.m2\repository\io\lettuce\lettuce-core\6.1.10.RELEASE\lettuce-core-6.1.10.RELEASE.jar;C:\Users\33042\.m2\repository\io\netty\netty-common\4.1.92.Final\netty-common-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-handler\4.1.92.Final\netty-handler-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-resolver\4.1.92.Final\netty-resolver-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-buffer\4.1.92.Final\netty-buffer-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-transport-native-unix-common\4.1.92.Final\netty-transport-native-unix-common-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-codec\4.1.92.Final\netty-codec-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\netty\netty-transport\4.1.92.Final\netty-transport-4.1.92.Final.jar;C:\Users\33042\.m2\repository\io\projectreactor\reactor-core\3.4.29\reactor-core-3.4.29.jar;C:\Users\33042\.m2\repository\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-pool2\2.9.0\commons-pool2-2.9.0.jar;C:\Users\33042\.m2\repository\eu\bitwalker\UserAgentUtils\1.21\UserAgentUtils-1.21.jar;C:\Users\33042\.m2\repository\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;C:\Users\33042\.m2\repository\cn\afterturn\easypoi-base\4.1.0\easypoi-base-4.1.0.jar;C:\Users\33042\.m2\repository\com\google\guava\guava\16.0.1\guava-16.0.1.jar;C:\Users\33042\.m2\repository\ognl\ognl\3.2.6\ognl-3.2.6.jar;C:\Users\33042\.m2\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;C:\Users\33042\.m2\repository\cn\afterturn\easypoi-web\4.1.0\easypoi-web-4.1.0.jar;C:\Users\33042\.m2\repository\cn\afterturn\easypoi-annotation\4.1.0\easypoi-annotation-4.1.0.jar;C:\Users\33042\.m2\repository\org\jsoup\jsoup\1.13.1\jsoup-1.13.1.jar;C:\Users\33042\.m2\repository\org\freemarker\freemarker\2.3.32\freemarker-2.3.32.jar;C:\Users\33042\.m2\repository\org\apache\poi\poi-examples\3.14\poi-examples-3.14.jar;C:\Users\33042\.m2\repository\org\apache\poi\poi-scratchpad\3.14\poi-scratchpad-3.14.jar;C:\Users\33042\.m2\repository\org\projectlombok\lombok\1.18.26\lombok-1.18.26.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-generator\target\classes;C:\Users\33042\.m2\repository\org\apache\velocity\velocity-engine-core\2.3\velocity-engine-core-2.3.jar;C:\Users\33042\.m2\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;C:\Users\33042\Downloads\Compressed\0.脚手架WEB端 + 移动端\WEB端脚手架\myblog\huacai-activiti\target\classes;C:\Users\33042\.m2\repository\org\activiti\activiti-spring-boot-starter\7.1.0.M6\activiti-spring-boot-starter-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-spring-app-process\7.1.0.M6\activiti-spring-app-process-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-application\7.1.0.M6\activiti-spring-application-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-identity\7.1.0.M6\activiti-spring-identity-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-security\7.1.0.M6\activiti-spring-security-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-process-model\7.1.0.M6\activiti-api-process-model-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-process-runtime\7.1.0.M6\activiti-api-process-runtime-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-model-shared\7.1.0.M6\activiti-api-model-shared-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-runtime-shared\7.1.0.M6\activiti-api-runtime-shared-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-spring\7.1.0.M6\activiti-spring-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-bpmn-converter\7.1.0.M6\activiti-bpmn-converter-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-process-validation\7.1.0.M6\activiti-process-validation-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-project\7.1.0.M6\activiti-spring-project-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\springframework\spring-jdbc\5.3.39\spring-jdbc-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\spring-orm\5.3.39\spring-orm-5.3.39.jar;C:\Users\33042\.m2\repository\javax\el\el-api\2.2\el-api-2.2.jar;C:\Users\33042\.m2\repository\org\slf4j\jcl-over-slf4j\1.7.36\jcl-over-slf4j-1.7.36.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-engine\7.1.0.M6\activiti-engine-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-project-model\7.1.0.M6\activiti-project-model-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\apache\commons\commons-email\1.5\commons-email-1.5.jar;C:\Users\33042\.m2\repository\com\sun\mail\javax.mail\1.5.6\javax.mail-1.5.6.jar;C:\Users\33042\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar;C:\Users\33042\.m2\repository\de\odysseus\juel\juel-api\2.2.7\juel-api-2.2.7.jar;C:\Users\33042\.m2\repository\de\odysseus\juel\juel-impl\2.2.7\juel-impl-2.2.7.jar;C:\Users\33042\.m2\repository\de\odysseus\juel\juel-spi\2.2.7\juel-spi-2.2.7.jar;C:\Users\33042\.m2\repository\joda-time\joda-time\2.10.5\joda-time-2.10.5.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-bpmn-model\7.1.0.M6\activiti-bpmn-model-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-process-runtime-impl\7.1.0.M6\activiti-api-process-runtime-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-connector-model\7.1.0.M6\activiti-connector-model-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-connector\7.1.0.M6\activiti-spring-connector-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-model-shared-impl\7.1.0.M6\activiti-api-model-shared-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-runtime-shared-impl\7.1.0.M6\activiti-api-runtime-shared-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-security-policies\7.1.0.M6\activiti-spring-security-policies-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-task-runtime-impl\7.1.0.M6\activiti-api-task-runtime-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-task-model\7.1.0.M6\activiti-api-task-model-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\api\activiti-api-task-runtime\7.1.0.M6\activiti-api-task-runtime-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-task-model-impl\7.1.0.M6\activiti-api-task-model-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-common-util\7.1.0.M6\activiti-common-util-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-api-process-model-impl\7.1.0.M6\activiti-api-process-model-impl-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-spring-process-extensions\7.1.0.M6\activiti-spring-process-extensions-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-spring-resource-loader\7.1.0.M6\activiti-spring-resource-loader-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\activiti\core\common\activiti-spring-resource-finder\7.1.0.M6\activiti-spring-resource-finder-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\springframework\spring-tx\5.3.39\spring-tx-5.3.39.jar;C:\Users\33042\.m2\repository\org\springframework\security\spring-security-core\5.7.12\spring-security-core-5.7.12.jar;C:\Users\33042\.m2\repository\org\springframework\security\spring-security-crypto\5.7.12\spring-security-crypto-5.7.12.jar;C:\Users\33042\.m2\repository\com\fasterxml\uuid\java-uuid-generator\3.1.4\java-uuid-generator-3.1.4.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-actuator-autoconfigure\2.5.15\spring-boot-actuator-autoconfigure-2.5.15.jar;C:\Users\33042\.m2\repository\org\springframework\boot\spring-boot-actuator\2.5.15\spring-boot-actuator-2.5.15.jar;C:\Users\33042\.m2\repository\org\activiti\activiti-image-generator\7.1.0.M6\activiti-image-generator-7.1.0.M6.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-awt-util\1.10\batik-awt-util-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-util\1.10\batik-util-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-constants\1.10\batik-constants-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-i18n\1.10\batik-i18n-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\xmlgraphics-commons\2.2\xmlgraphics-commons-2.2.jar;C:\Users\33042\.m2\repository\commons-logging\commons-logging\1.0.4\commons-logging-1.0.4.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-dom\1.10\batik-dom-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-css\1.10\batik-css-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-ext\1.10\batik-ext-1.10.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-xml\1.10\batik-xml-1.10.jar;C:\Users\33042\.m2\repository\xalan\xalan\2.7.2\xalan-2.7.2.jar;C:\Users\33042\.m2\repository\xalan\serializer\2.7.2\serializer-2.7.2.jar;C:\Users\33042\.m2\repository\xml-apis\xml-apis\1.3.04\xml-apis-1.3.04.jar;C:\Users\33042\.m2\repository\xml-apis\xml-apis-ext\1.3.04\xml-apis-ext-1.3.04.jar;C:\Users\33042\.m2\repository\org\apache\xmlgraphics\batik-svggen\1.10\batik-svggen-1.10.jar;C:\Users\33042\.m2\repository\cn\hutool\hutool-all\5.5.2\hutool-all-5.5.2.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-spring-boot-starter\3.0.3\knife4j-spring-boot-starter-3.0.3.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-spring-boot-autoconfigure\3.0.3\knife4j-spring-boot-autoconfigure-3.0.3.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-spring\3.0.3\knife4j-spring-3.0.3.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-annotations\3.0.3\knife4j-annotations-3.0.3.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-core\3.0.3\knife4j-core-3.0.3.jar;C:\Users\33042\.m2\repository\org\javassist\javassist\3.25.0-GA\javassist-3.25.0-GA.jar;C:\Users\33042\.m2\repository\io\swagger\swagger-core\1.5.22\swagger-core-1.5.22.jar;C:\Users\33042\.m2\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.12.7\jackson-dataformat-yaml-2.12.7.jar;C:\Users\33042\.m2\repository\com\github\xiaoymin\knife4j-spring-ui\3.0.3\knife4j-spring-ui-3.0.3.jar" com.huacai.HuaCaiApplication 10:12:00,460 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 10:12:00,461 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/33042/Downloads/Compressed/0.%e8%84%9a%e6%89%8b%e6%9e%b6WEB%e7%ab%af%20+%20%e7%a7%bb%e5%8a%a8%e7%ab%af/WEB%e7%ab%af%e8%84%9a%e6%89%8b%e6%9e%b6/myblog/huacai-admin/target/classes/logback.xml] 10:12:00,520 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 10:12:00,527 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 10:12:00,529 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [console] 10:12:00,542 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:12:00,581 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 10:12:00,587 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [file_info] 10:12:00,596 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@648525677 - No compression will be used 10:12:00,598 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@648525677 - Will use the pattern D:/huacai/huacaiLog/sys-info.%d{yyyy-MM-dd}.log for the active file 10:12:00,601 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/huacai/huacaiLog/sys-info.%d{yyyy-MM-dd}.log'. 10:12:00,601 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 10:12:00,603 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sat May 10 10:12:00 CST 2025 10:12:00,604 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:12:00,608 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Active log file name: D:/huacai/huacaiLog/sys-info.log 10:12:00,608 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - File property is set to [D:/huacai/huacaiLog/sys-info.log] 10:12:00,610 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] 10:12:00,610 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) at java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) at at java.io.FileOutputStream.open0(Native Method) at at java.io.FileOutputStream.open(FileOutputStream.java:270) at at java.io.FileOutputStream.<init>(FileOutputStream.java:213) at at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:26) at at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:204) at at ch.qos.logback.core.FileAppender.start(FileAppender.java:127) at at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:100) at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90) at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179) at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53) at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:64) at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:134) at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130) at at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59) at at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:206) at at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) 10:12:00,610 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 10:12:00,610 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [file_error] 10:12:00,611 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@352359770 - No compression will be used 10:12:00,611 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@352359770 - Will use the pattern D:/huacai/huacaiLog/sys-error.%d{yyyy-MM-dd}.log for the active file 10:12:00,611 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/huacai/huacaiLog/sys-error.%d{yyyy-MM-dd}.log'. 10:12:00,611 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 10:12:00,612 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sat May 10 10:12:00 CST 2025 10:12:00,612 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:12:00,613 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Active log file name: D:/huacai/huacaiLog/sys-error.log 10:12:00,613 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - File property is set to [D:/huacai/huacaiLog/sys-error.log] 10:12:00,613 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] 10:12:00,614 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) at java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) at at java.io.FileOutputStream.open0(Native Method) at at java.io.FileOutputStream.open(FileOutputStream.java:270) at at java.io.FileOutputStream.<init>(FileOutputStream.java:213) at at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:26) at at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:204) at at ch.qos.logback.core.FileAppender.start(FileAppender.java:127) at at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:100) at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90) at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179) at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53) at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:64) at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:134) at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130) at at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59) at at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:206) at at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) 10:12:00,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 10:12:00,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [sys-user] 10:12:00,614 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@243745864 - No compression will be used 10:12:00,614 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@243745864 - Will use the pattern D:/huacai/huacaiLog/sys-user.%d{yyyy-MM-dd}.log for the active file 10:12:00,615 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'D:/huacai/huacaiLog/sys-user.%d{yyyy-MM-dd}.log'. 10:12:00,615 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight. 10:12:00,615 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sat May 10 10:12:00 CST 2025 10:12:00,615 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:12:00,616 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Active log file name: D:/huacai/huacaiLog/sys-user.log 10:12:00,616 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - File property is set to [D:/huacai/huacaiLog/sys-user.log] 10:12:00,616 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] 10:12:00,616 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at at java.io.FileOutputStream.open0(Native Method) at at java.io.FileOutputStream.open(FileOutputStream.java:270) at at java.io.FileOutputStream.<init>(FileOutputStream.java:213) at at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:26) at at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:204) at at ch.qos.logback.core.FileAppender.start(FileAppender.java:127) at at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:100) at at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90) at at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193) at at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179) at at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:165) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:152) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:110) at at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53) at at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:64) at at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:134) at at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) at at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:417) at at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:362) at at org.apache.commons.logging.LogAdapter$Slf4jAdapter.createLocationAwareLog(LogAdapter.java:130) at at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:91) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67) at at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59) at at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:206) at at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) 10:12:00,617 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.huacai] to INFO 10:12:00,617 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework] to WARN 10:12:00,617 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 10:12:00,617 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [console] to Logger[ROOT] 10:12:00,618 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 10:12:00,618 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [file_info] to Logger[ROOT] 10:12:00,618 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [file_error] to Logger[ROOT] 10:12:00,618 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [sys-user] to INFO 10:12:00,618 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [sys-user] to Logger[sys-user] 10:12:00,618 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 10:12:00,619 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@29b5cd00 - Registering current configuration as safe fallback point Logging system failed to initialize using configuration from 'null' java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179) at org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.java:232) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:73) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) at java.util.ArrayList.forEach(ArrayList.java:1259) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:379) at org.springframework.boot.SpringApplication.run(SpringApplication.java:337) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) 10:12:01.289 [restartedMain] ERROR o.s.b.SpringApplication - [reportFailure,870] - Application run failed java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:328) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) at java.util.ArrayList.forEach(ArrayList.java:1259) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:379) at org.springframework.boot.SpringApplication.run(SpringApplication.java:337) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179) at org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.java:232) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:73) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313) ... 23 common frames omitted Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:328) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:145) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) at java.util.ArrayList.forEach(ArrayList.java:1259) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:379) at org.springframework.boot.SpringApplication.run(SpringApplication.java:337) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) at com.huacai.HuaCaiApplication.main(HuaCaiApplication.java:18) ... 5 more Caused by: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-info.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_info] - openFile(D:/huacai/huacaiLog/sys-info.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-info.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-error.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file_error] - openFile(D:/huacai/huacaiLog/sys-error.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-error.log (系统找不到指定的路径。) ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - Failed to create parent directories for [D:\huacai\huacaiLog\sys-user.log] ERROR in ch.qos.logback.core.rolling.RollingFileAppender[sys-user] - openFile(D:/huacai/huacaiLog/sys-user.log,true) call failed. java.io.FileNotFoundException: D:\huacai\huacaiLog\sys-user.log (系统找不到指定的路径。) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179) at org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.java:232) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:73) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313) ... 23 more 进程已结束,退出代码为 0 什么问题,怎么解决
05-11
日志中可以看出,问题的核心是 `Logback` 的配置文件中定义的日志路径无法被创建或访问。具体来说,`D:\huacai\huacaiLog` 这个目录不存在,导致 `RollingFileAppender` 无法创建日志文件。 ### 问题原因 1. **路径不存在**:`D:\huacai\huacaiLog` 目录在运行时并不存在。 2. **权限问题**:即使路径存在,程序可能没有权限在该路径下创建文件或目录。 3. **操作系统限制**:Windows 系统对某些路径(如根目录)可能有特殊权限要求,可能导致无法创建文件。 ### 解决方法 可以通过以下几种方式解决: #### 方法一:手动创建日志目录 确保 `D:\huacai\huacaiLog` 目录已经存在。你可以手动创建该目录: ```java import java.io.File; public class DirectoryCreator { public static void main(String[] args) { File dir = new File("D:\\huacai\\huacaiLog"); if (!dir.exists()) { dir.mkdirs(); // 创建多级目录 } } } ``` 运行上述代码后,检查 `D:\huacai\huacaiLog` 是否已成功创建。 #### 方法二:修改 `logback.xml` 配置文件 将日志路径更改为一个绝对路径或相对路径,确保路径存在且可写入。例如: ```xml <configuration> <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/sys-info.log</file> <!-- 修改为相对路径 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="FILE_INFO"/> </root> </configuration> ``` 将路径从 `D:/huacai/huacaiLog/` 改为 `logs/`,这样会在项目的根目录下创建 `logs` 文件夹。 #### 方法三:动态创建目录 可以在程序启动时动态检查并创建日志目录: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.io.File; @SpringBootApplication public class HuaCaiApplication { public static void main(String[] args) { String logPath = "D:/huacai/huacaiLog"; File logDir = new File(logPath); if (!logDir.exists()) { logDir.mkdirs(); // 动态创建日志目录 } SpringApplication.run(HuaCaiApplication.class, args); } } ``` #### 方法四:使用 Spring Boot 的默认日志路径 Spring Boot 默认会将日志输出到 `./logs/` 或控制台。如果你不需要自定义路径,可以删除 `logback.xml` 中的文件路径配置,仅保留控制台输出: ```xml <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE"/> </root> </configuration> ``` ### 总结 - 如果需要自定义日志路径,请确保路径存在且程序有权限访问。 - 如果路径不存在,可以通过手动创建、修改配置文件或动态创建目录来解决问题。 - 如果不关心自定义路径,可以直接使用 Spring Boot 的默认日志配置。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值