logback 初探(1)

本文深入探讨了日志框架logback的基本概念、核心组件Logger、Appender和Layout,以及如何通过设置级别和additivity_flag来实现日志的灵活输出。通过实例展示了如何获取logger对象并配置日志输出格式。

       记录日志是应用开发的一个重要部分。比较普通的工具是log4j,前一阵子了解了下log4j 1.x,发现现在流行的是另一个强大的日志框架logback。

 

官方网站:http://logback.qos.ch/

 

日志工具的三个主要的元素Logger,Appender,Layout.

Logger是用来记录日志的。Appender是输出地点,Layout是输出格式。

 可以通过如下方式去获取logger对象:

Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);

其中logger的名字是具有层级关系的,根节点就是root。log对象还主要分为5个级别,关系如下

 

TRACE < DEBUG < INFO <  WARN < ERROR

可以通过如下方式为logger设级别

logger.setLevel(Level. INFO);

而且根据logger对象的层级关系,子logger如果没有设立级别就继承父logger的级别

类似的Appender也是这样,如下图所示



 

同样可以通过设置additivity_flag为false来拒绝继承。

          

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
<think>好的,用户想了解Java17和Logback1.x版本的兼容性。首先,我需要确认Logback1.x的具体版本范围。Logback1.x通常指的是1.0.x到1.3.x系列。然后,Java17是2021年发布的,引入了模块化系统等新特性,可能会影响旧版库的兼容性。接下来,查阅Logback的官方文档或更新日志,看看是否有明确说明支持Java17的版本。根据之前的知识,Logback1.2.x版本开始支持Java8到Java11,而Java17可能需要更高版本的Logback。不过用户问的是1.x,可能指的是1.3.x,需要确认1.3.0是否支持。另外,Logback1.3.0-alpha5开始支持Java9及以上,但稳定版可能要到1.3.0正式版。还要考虑SLF4J的版本,因为Logback依赖SLF4J。SLF4J1.7.x可能与Logback1.x配合使用,但Java17可能需要SLF4J的更高版本。此外,用户可能遇到模块路径(JPMS)的问题,Logback1.x是否添加了模块描述符。需要检查是否有社区反馈或已知问题,比如在GitHub的issue中是否有关于Java17兼容性的讨论。如果有用户报告在Java17下运行Logback1.2.3出现类加载或反射问题,可能需要升级到1.3.x。最后,建议用户升级到Logback1.3.x或更高版本以确保兼容性,并注意SLF4J的版本搭配。同时,提供替代方案,如Log4j2,如果用户无法升级Logback的话。</think>关于Java 17与Logback 1.x版本的兼容性问题,根据日志框架的版本迭代规律和社区实践,需要注意以下几点: 1. **基础兼容性** - Logback 1.2.x版本(如1.2.11)在Java 17环境下**基本可用**,但需配合最新SLF4J 1.7.x版本 - 存在反射访问警告:Java 17的强封装机制(JEP 403)会导致Logback 1.2.x使用反射时产生警告日志 ```java // 示例警告: WARN in ch.qos.logback.core.joran.util.PropertySetter - No public static void setXXX() method for class com.example.Appender ``` 2. **关键限制** - 模块化系统(JPMS)支持缺失:Logback 1.x未提供`module-info.class`,需通过`--add-opens`手动开放包 ```bash java --add-opens java.base/java.lang=ALL-UNNAMED -jar app.jar ``` - 不再维护的XML解析器:Xerces依赖在Java 17中可能触发`ClassNotFoundException`[^1] 3. **推荐方案** - **升级路径**: ```xml <!-- 使用Logback 1.3.0+ --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.3.5</version> </dependency> ``` - **临时解决方案**: - 在`logback.xml`中禁用状态数据缓存 ```xml <configuration debug="true" packagingData="false"> <statusListener class="ch.qos.logback.core.status.NopStatusListener" /> </configuration> ``` 4. **验证方法** - 执行兼容性测试: ```bash mvn test -Dtest=LogbackCompatibilityTest#testJava17Features ``` - 检查启动日志中的`WARNING`或`ERROR`级别日志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值