<?xml version="1.0" encoding="UTF-8"?><configurationscan="true"scanPeriod="30 seconds"><!-- 1. 基础变量定义 --><propertyname="LOG_APP_NAME"value="SmartProcurement"/><propertyname="LOG_BASE_PATH"value="logs"/><propertyname="LOG_PATTERN"value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/><!-- 2. 控制台输出配置 --><appendername="CONSOLE"class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 3. 普通日志文件输出(按天滚动 + 大小切割) --><appendername="FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_BASE_PATH}/${LOG_APP_NAME}.log</file><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_BASE_PATH}/${LOG_APP_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxHistory>30</maxHistory><timeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 4. 错误日志单独输出 --><appendername="ERROR_FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_BASE_PATH}/${LOG_APP_NAME}-error.log</file><filterclass="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_BASE_PATH}/${LOG_APP_NAME}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxHistory>30</maxHistory><timeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><pattern>${LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder></appender><!-- 5. SQL 日志单独配置(MyBatis/MyBatis-Plus 场景) --><loggername="com.iflytek.knowledge.mapper"level="DEBUG"additivity="false"><appender-refref="CONSOLE"/><appender-refref="FILE"/></logger><!-- 6. 按环境区分日志级别 --><springProfilename="test"><rootlevel="INFO"><appender-refref="CONSOLE"/><appender-refref="FILE"/><appender-refref="ERROR_FILE"/></root></springProfile><springProfilename="prod"><!-- <root level="INFO">--><!-- <appender-ref ref="FILE"/>--><!-- <appender-ref ref="ERROR_FILE"/>--><!-- </root>--><!-- <!– 生产环境关闭 SQL 调试日志 –>--><!-- <logger name="com.iflytek.knowledge.mapper" level="INFO" additivity="false">--><!-- <appender-ref ref="FILE"/>--><!-- </logger>--><rootlevel="INFO"><appender-refref="CONSOLE"/><appender-refref="FILE"/><appender-refref="ERROR_FILE"/></root></springProfile></configuration>日志打印配置:logback-spring.xml配置;info和error完全区分了,并且按时间拆分了
张小明
前端开发工程师
基于Python的高考志愿报名推荐系统源码设计与文档
前言 在高考志愿填报精细化需求提升、传统填报模式存在 “数据维度单一、匹配精准度低、政策解读滞后、风险评估不足” 的痛点背景下,基于 Python 的高考志愿报名推荐系统构建具有重要的教育与实用价值:从数据处理层面,系统依托 Python 的 Pa…
飞桨PaddlePaddle入门与核心实践
飞桨PaddlePaddle入门与核心实践 在人工智能技术飞速发展的今天,深度学习早已不再是实验室里的神秘概念,而是真正走进了搜索引擎、推荐系统、语音助手、自动驾驶等我们每天都在使用的应用中。然而,面对TensorFlow、PyTorch、MindSpore、JAX等…
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十讲)
这一期讲解的控件是二维码,二维码是一种基于矩阵排列的二维条码技术,它以矩阵的形式存储数据,与传统的条形码相比,二维码可以存储更多的信息,并且能够处理数字、字母和汉字等多种数据类型。二维码由寻像图形、定界符、…
热销榜单:2025年高口碑数字人推荐,解决你的选择难题!
在这个数字化时代,选择合适的数字人产品变得尤为重要。本文将为你盘点2025年高口碑的数字人TOP10,帮助你找到最值得信赖的产品。无论是功能强大还是使用便捷,这些精选产品都在全网热议中备受关注。了解这些产品的特性,让你做出明智…
应“双碳”考核!安科瑞通信机房能耗监测方案,让PUE管控精准落地
唐雪阳安科瑞电气股份有限公司 上海嘉定 201801当5G网络加速渗透、数据中心规模呈爆发式增长,通信机房作为数字经济的“核心枢纽”,正面临着能耗与日俱增的严峻挑战。机房内服务器、空调、UPS等设备24小时不间断运行,能源消耗分散且管控难度…
1天净流入10亿!A500ETF南方凭什么成为布局中国核心资产的优选?
近期A股市场暖风频吹,政策发力、新质生产力加速崛起,中长期布局窗口已然打开。而在众多投资工具中,一只中盘宽基ETF意外“出圈”。12月8日,A500ETF南方(交易代码:159352)单日份额激增8.19亿份&a…