5.3.email操作

本文介绍了如何在Python中使用smtplib和email模块发送纯文本邮件,以及如何构建包含文本、HTML、图片和附件的复杂邮件。通过实例展示了如何连接SMTP服务器、身份验证和发送邮件的过程。

发送邮件的协议是stmp,python对stmp的支持,可以发送纯文本邮件。

        在 Python 中,SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。为了在 Python 中发送电子邮件,我们可以使用内置的 smtplibemail 模块

5.3.1.smtplib 模块:

  • smtplib 模块提供了一个简单而强大的接口,用于通过 SMTP 协议发送电子邮件。
  • 它允许连接到邮件服务器,进行身份验证,并发送邮件给指定的收件人。
  • 这个模块封装了底层的 SMTP 协议细节,使得发送电子邮件变得更加容易。

例:

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage
 
EMAIL_ADDRESS = "自己的@163.com"     # 邮箱的地址
EMAIL_PASSWORD = "XXXXXX"     # 授权码
 
# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()
 
subject = "title"
body = "welcome new day"
 
msg = EmailMessage() # EmailMessage() 是 email.message.EmailMessage 类的构造函数,用于创建一个新的邮件对象。
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标的@163.com"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容
 
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯
 
    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
  
    # 方式二:使用send_message方法发送邮件信息
    smtp.send_message(msg)
 
 
 

5.3.2.email模块

  • email 模块提供了创建和处理电子邮件的功能,可以构建复杂的邮件消息。
  • 它允许你设置邮件的发件人、收件人、主题、正文、附件等,并生成符合标准的 MIME(Multipurpose Internet Mail Extensions)格式的邮件消息。
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
import smtplib

# 配置邮箱及密码
from_mail = '自己的@163.com'
from_mail_password = '授权码'
to_mail = '目标的@163.com'

# 设置总的邮件体对象,对象类型为mixed
msg = MIMEMultipart('mixed')

# 邮件的发件人及收件人信息
msg['From'] = from_mail
msg['To'] = to_mail

# 邮件的主题
msg['Subject'] = 'python mail test'

# 构造文本内容
text_info = 'hello world'
text_sub = MIMEText(text_info, 'plain', 'utf-8')
msg.attach(text_sub)

# 构造超文本
url = "https://docs.python.org/ja/3/library/email.examples.html"
html_info = """
<p>点击下面链接试试</p>
<p><a href="%s">click me</a></p>
<p>welcome new world</p>
"""% url
html_sub = MIMEText(html_info, 'html', 'utf-8')
# 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
html_sub["Content-Disposition"] = 'attachment; filename="aaa.html"'
# 把构造的内容写到邮件体中
msg.attach(html_sub)

# 构造图片
image_file = open(r'本地\img0.jpg', 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-ID', '<image1>')
# 如果不加下边这行代码的话,会在收件方方面显示乱码的bin文件,下载之后也不能正常打开,这个地方也可以对文件重命名
image["Content-Disposition"] = 'attachment; filename="aaa.png"'
msg.attach(image)

# 构造附件
txt_file = open(r'本地\csv_op_t1.py', 'rb').read()
txt = MIMEText(txt_file, 'base64', 'utf-8')
txt["Content-Type"] = 'application/octet-stream'
#重命名附件为aaa.txt
txt.add_header('Content-Disposition', 'attachment', filename='aaa.py')
msg.attach(txt)

try:
    server = smtplib.SMTP('smtp.163.com')
    server.starttls()
    server.login(from_mail,from_mail_password)

    server.sendmail(from_mail,to_mail,msg.as_string())
    server.quit()
    print('sendemail successful!')
except Exception as e:
    print('sendemail failed next is the reason')
    print(e)

email的例子参照:

Python常用模块8-Python的email模块简介 - 简书 (jianshu.com)

"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 &#39;yyyy-MM-dd&#39; from file name pattern &#39;D:/huacai/huacaiLog/sys-info.%d{yyyy-MM-dd}.log&#39;. 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 &#39;yyyy-MM-dd&#39; from file name pattern &#39;D:/huacai/huacaiLog/sys-error.%d{yyyy-MM-dd}.log&#39;. 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 &#39;yyyy-MM-dd&#39; from file name pattern &#39;D:/huacai/huacaiLog/sys-user.%d{yyyy-MM-dd}.log&#39;. 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 &#39;null&#39; 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、付费专栏及课程。

余额充值