Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。
logback.xml
- <?xml version="1.0" encoding="UTF-8"?> <!-- Reference Manual http://logback.qos.ch/manual/index.html -->
- <configuration>
- <!-- LEVEL:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF -->
- <!-- 控制台输出 -->
- <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
- <!-- encoder 可以指定字符集,对于中文输出有意义 -->
- <encoder charset="UTF-8">
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- 每日最多生成10个文件,可以通过这些文件查看系统工作状态 -->
- <!--
- <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>TRACE</level>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${log.root}/WEB-INF/logs/trace-%d{yyyy-MM-dd}.log</fileNamePattern>
- <maxHistory>10</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
- </encoder>
- </appender>
- -->
- <!-- 下面这段注释的代码可以在日志文件超过 5MB 时进行归档,并且归档文件后缀只要是 .zip 或 .gz 就会自动
- 压缩日志归档 -->
- <appender name="InfoFileZip" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${log.root}/WEB-INF/logs/info.log</file>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <fileNamePattern>${log.root}/WEB-INF/logs/bak/info.%i.log.zip</fileNamePattern>
- <minIndex>1</minIndex>
- <maxIndex>10</maxIndex>
- </rollingPolicy>
- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
- <maxFileSize>10MB</maxFileSize>
- </triggeringPolicy>
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- 时间滚动输出 level为 ERROR 日志 -->
- <appender name="ErrorFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>ERROR</level>
- <OnMismatch>DENY</OnMismatch>
- <OnMatch>ACCEPT</OnMatch>
- </filter>
- <File>${log.root}/WEB-INF/logs/error.log</File>
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <FileNamePattern>${log.root}/WEB-INF/logs/error.log.%i.bak</FileNamePattern>
- <MinIndex>1</MinIndex>
- <MaxIndex>3</MaxIndex>
- </rollingPolicy>
- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
- <MaxFileSize>100MB</MaxFileSize>
- </triggeringPolicy>
- <encoder>
- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg
- %n</Pattern>
- </encoder>
- </appender>
- <!-- 输出到控制台和文件,可定义更多的 Appender,默认配置 -->
- <root level="DEBUG">
- <appender-ref ref="stdout" />
- </root>
- <!-- com.sysmaster包配置日志规则 -->
- <logger name="com.sysmaster" level="INFO" additivity="false">
- <appender-ref ref="stdout"/>
- <appender-ref ref="InfoFileZip"/>
- <appender-ref ref="ErrorFile"/>
- </logger>
- <!--为com.sysmaster.po.ResourcePO类配置日志规则 -->
- <!--
- <logger name="com.sysmaster.po.ResourcePO" level="INFO" additivity="false">
- <appender-ref ref="STDOUT"/>
- </logger>
- -->
- <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
- <!--
- <logger name="org.hibernate" level="WARN"/>
- <logger name="org.springframework" level="WARN"/>
- <logger name="com.opensymphony" level="WARN"/>
- <logger name="org.apache" level="WARN"/>
- -->
- <!-- 为 Hibernate 定制日志规则 -->
- <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
- <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG"/>
- <logger name="org.hibernate.SQL" level="DEBUG"/>
- <logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>
- <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/>
- </configuration>
LogbackConfigListener.java
- package com.sysmaster.util.logback;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- /**
- * 用于启用logback日志
- *
- */
- public class LogbackConfigListener implements ServletContextListener {
- public void contextInitialized(ServletContextEvent event) {
- LogbackWebConfigurer.initLogging(event.getServletContext());
- }
- public void contextDestroyed(ServletContextEvent event) {
- LogbackWebConfigurer.shutdownLogging(event.getServletContext());
- }
- }
LogbackConfigurer.java
- package com.sysmaster.util.logback;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.net.URL;
- import org.slf4j.LoggerFactory;
- import org.springframework.util.ResourceUtils;
- import org.springframework.util.SystemPropertyUtils;
- import ch.qos.logback.classic.LoggerContext;
- import ch.qos.logback.classic.joran.JoranConfigurator;
- import ch.qos.logback.core.joran.spi.JoranException;
- /**
- *
- * 用于读取logback的配置文件,可以直接用spring->log4j的代码修改
- *
- */
- public abstract class LogbackConfigurer
- {
- public static final String CLASSPATH_URL_PREFIX = "classpath:";
- public static final String XML_FILE_EXTENSION = ".xml";
- private static LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
- private static JoranConfigurator configurator = new JoranConfigurator();
- public static void initLogging(String location) throws FileNotFoundException {
- String resolvedLocation = SystemPropertyUtils.resolvePlaceholders(location);
- URL url = ResourceUtils.getURL(resolvedLocation);
- if (resolvedLocation.toLowerCase().endsWith(XML_FILE_EXTENSION)) {
- configurator.setContext(lc);
- lc.reset();
- try {
- configurator.doConfigure(url);
- } catch (JoranException ex) {
- throw new FileNotFoundException(url.getPath());
- }
- lc.start();
- }
- }
- public static void shutdownLogging() {
- lc.stop();
- }
- public static void setWorkingDirSystemProperty(String key) {
- System.setProperty(key, new File("").getAbsolutePath());
- }
- }
LogbackWebConfigurer.java
- package com.sysmaster.util.logback;
- import java.io.FileNotFoundException;
- import javax.servlet.ServletContext;
- import org.springframework.util.ResourceUtils;
- import org.springframework.util.SystemPropertyUtils;
- import org.springframework.web.util.WebUtils;
- /**
- *
- * 用于读取logback的WEB配置文件,可以直接用spring->log4j的代码修改
- *
- */
- public abstract class LogbackWebConfigurer
- {
- public static final String CONFIG_LOCATION_PARAM = "logbackConfigLocation";
- public static final String REFRESH_INTERVAL_PARAM = "logbackRefreshInterval";
- public static final String EXPOSE_WEB_APP_ROOT_PARAM = "logbackExposeWebAppRoot";
- public static void initLogging(ServletContext servletContext) {
- if (exposeWebAppRoot(servletContext)) {
- WebUtils.setWebAppRootSystemProperty(servletContext);
- }
- String location = servletContext.getInitParameter(CONFIG_LOCATION_PARAM);
- if (location != null) {
- try {
- if (!ResourceUtils.isUrl(location)) {
- location = SystemPropertyUtils.resolvePlaceholders(location);
- location = WebUtils.getRealPath(servletContext, location);
- }
- servletContext.log("从 [" + location + "]初始化logback的配置");
- LogbackConfigurer.initLogging(location);
- } catch (FileNotFoundException ex) {
- throw new IllegalArgumentException("无效的 'logbackConfigLocation' 配置参数,请检查web.xml中的logbackConfigLocation参数值前是否有classpat字样: " + ex.getMessage());
- }
- }
- }
- public static void shutdownLogging(ServletContext servletContext) {
- servletContext.log("关闭logback");
- try {
- LogbackConfigurer.shutdownLogging();
- } finally {
- if (exposeWebAppRoot(servletContext)) {
- WebUtils.removeWebAppRootSystemProperty(servletContext);
- }
- }
- }
- private static boolean exposeWebAppRoot(ServletContext servletContext) {
- String exposeWebAppRootParam = servletContext.getInitParameter(EXPOSE_WEB_APP_ROOT_PARAM);
- return (exposeWebAppRootParam == null || Boolean.valueOf(exposeWebAppRootParam));
- }
- }
转:http://star77266989.iteye.com/blog/2112113
相关推荐
这个文件定义了日志的级别(TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF),日志输出的目标(控制台、文件、数据库等)以及日志格式。 例如,一个简单的 `logback.xml` 配置可能会如下所示: ```xml ...
chrome-headless-shell-win64-135.0.7004.0 (Canary).zip
建筑工地个人防护装备分割系统源码&数据集分享
车牌字符识别系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
实时可调的DDS信号发生器设计:基于FPGA的Verilog编程,灵活控制波形与频率的调制系统,(可实时切波形并控制频率)DDS信号发生器设计。 FPGA设计,verilog设计,DDS信号发生器:基于调制方式灵活可控的信号发生器DDS。 可生成ASK调制波、FSK调制波、正弦波、矩形波、三角波、锯齿波等多种波形。 方案采用三个按键控制,可按键控制不同信号、不同频率输出。 按键1:控制切六种波形(ASK调制波,FSK调制波,正弦波,矩形波,三角波,锯齿波)。 按键2:每按下一次,频率增加1 10。 按键3:每按下一次,频率减小1 10。 频率相位可灵活调整。 ,核心关键词: 1. DDS信号发生器设计 2. FPGA设计 3. Verilog设计 4. 调制方式 5. 波形切换 6. 频率控制 7. 按键控制 8. 频率相位调整 用分号分隔的关键词结果为:DDS信号发生器设计;FPGA设计;Verilog设计;调制方式;波形切换;频率控制;按键控制;频率相位调整;,灵活控制的FPGA设计:基于DDS技术的信号发生器实现方案
一个windows上使用的搜索小工具
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
标题:基于放射虫和硅藻的温度重建揭示南大洋印度洋扇区表面及亚表面温度变化 内容: 一项最新的研究在南大洋印度洋扇区的四个沉积物核心中提出了五项新的温度记录。这项研究使用了名为SORAD的数据集作为训练集,应用Imbrie和Kipp方法对经过对数转换的数据进行分析,重建了基于放射虫的亚表面温度(subST)。此外,通过利用Crosta等人于2020年编制的包含249个样本的数据集,并采用现代类似种技术应用于33个硅藻分类单元的相对丰度,预测了基于硅藻的海表温度(SST)。 特别地,来自DCR-1PC(Crosta等人,2020年)和MD19-3580(本研究)的核心SST记录以及来自MD19-3575CQ和MD19-3580(本研究)的核心subST记录被重采样至每3千年一个间隔,以便从SST中减去subST在这两个核心站点的值(DCR-1PC/MD19-3575CQ和MD19-3580),从而重建表面与亚表面之间温度差(deltaT)的演变过程。本研究包括了这些重采样数据和deltaT记录,为理解该地区过去气候条件提供了重要线索。
人脸表情行为识别系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
Zabbix 适用于各种规模的企业和组织,特别是那些需要监控复杂 IT 基础设施的用户。以下是一些使用 Zabbix 的优势: 开源免费:Zabbix 是开源软件,可以免费使用,且社区活跃,文档丰富。 高度可定制:用户可以根据需求自定义监控项、告警规则和报表。 跨平台支持:支持多种操作系统(Linux、Windows、Unix等)和数据库(MySQL、PostgreSQL、Oracle等)。 强大的社区支持:Zabbix 拥有庞大的用户社区,用户可以轻松找到解决方案和最佳实践。 企业级功能:支持高可用性、分布式监控和自动化运维,适合企业级应用。 该软件包使用rockylinux8、mysql、nginx。 软件使用:解压,createrepo创建本地yum仓库,创建仓库文件,可yum或dnf 下载,详细见:https://blog.csdn.net/m0_74744227/article/details/145389193
豆类苗叶检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
魔众视频管理系统是由国内领先的技术团队开发商进行开发的,是搭建视频系统最佳选择的程序源码,支持多端同步浏览。 魔众视频管理系统,轻量级视频管理系统。 2022年08月19日魔众视频管理系统发布v4.1.0版本,增加了以下27个特性: ·[新功能] 文件上传切片最大2M,分片文件根据配置动态清除 ·[新功能] 图标库中新增cube图标 ·[新功能] UEditorPlus升级到2.3.0 ·[新功能] bodyProperties可为body标签增加属性 ·[新功能] 图标库新增 check-simple ·[新功能] Cookie库新增属性参数 ·[新功能] 后台管理员角色新增备注字段 ·[新功能] Grid编辑操作名称可自定义 ·[新功能] FileUtil新增文件大小精简格式化 ·[新功能] 登录界面全新改版大气美观 ·[新功能] Type类型数据新增导出JS配置文件 ·[新功能] 富文本组件新增 editor-ready 自定义事件 ·[新功能] Response新增停止执行抛出消息的方法 ·[新功能] Grid新增批量弹窗快捷操作方式 ·[新功能] Json组件增加高度可配
永磁同步电机Q15焦点:无传感自适应滑膜算法及SMO_C语言定点代码与仿真模型示例解析,永磁同步电机无传感自适应滑模 滑膜观测器(SMO)_示例C语言定点代码和仿真模型,Q15 foc pmsm 使用“自适应”滑模算法消除一阶滤波器 ,核心关键词:永磁同步电机; 无传感自适应滑模; 滑膜观测器(SMO); C语言定点代码; Q15; foc pmsm; 自适应滑模算法; 一阶滤波器。 关键词用分号分隔为:永磁同步电机; 无传感; 自适应滑模; 滑膜观测器(SMO); C语言定点代码; Q15; foc pmsm; 一阶滤波器。,"自适应滑模算法在永磁同步电机中的应用:Q15定点代码与仿真模型示例"
Python泰勒图实现多模型可视化对比:源码高逼格版展示与使用教程,Python高逼格泰勒图及源码~,多模型对比~可视化工具 ,Python; 泰勒图; 高逼格; 多模型对比; 可视化工具,Python泰勒图高逼格展示:多模型对比可视化工具源码
基于WOA-XGBoost的回归预测:以优化XGBoost树参数的改进算法研究(基于MATLAB代码,包括评价指标),基于鲸鱼算法优化极限梯度提升树的数据回归预测(WOA-XGBoost) 鲸鱼算法WOA优化极限梯度提升树XGBoost树的数量、树的深度和学习率 基于MATLAB环境 替自己的数据即可 代码注释清晰 适合学习 回归预测的评价指标包括平均绝对误差 均方误差 均方根误差 平均绝对百分比误差以及关联系数 ,WOA-XGBoost; 鲸鱼算法优化; 树的数量; 树的深度; 学习率优化; MATLAB环境; 代码注释清晰; 回归预测; 评价指标,基于WOA-XGBoost算法的数据回归预测模型
介绍: 在2025年,随着技术的不断进步和用户需求的多样化,社区平台的设计与功能也在不断演变。StarFree作为一款全新的唯美风格社区源码,凭借其独特的设计理念和强大的功能,迅速成为了开发者与用户关注的焦点。本文将为您详细介绍StarFree源码的特点、功能以及应用场景。 1. 唯美设计,极致视觉体验 StarFree源码以“唯美”为核心设计理念,采用了简约而不失优雅的UI设计。整体界面以柔和的色调为主,搭配流畅的动画效果,为用户带来极致的视觉享受。无论是社区主页、个人中心,还是帖子详情页,每一个细节都经过精心打磨,确保用户在浏览时感受到舒适与愉悦。 2. 模块化架构,灵活扩展 StarFree采用模块化架构设计,开发者可以根据需求自由组合或扩展功能模块。无论是社交互动、内容发布,还是用户管理,每个模块都独立且高效,便于二次开发与定制。这种设计不仅降低了开发难度,还提高了系统的可维护性。 3. 多端适配,无缝体验 StarFree源码支持多端适配,包括Web端、移动端(iOS/Android)以及小程序。无论用户通过哪种设备访问社区,都能获得一致且流畅的体验。源码内置响应式布局
open3d qt6demo示例
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
二维码与条形码检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
内容: 该数据集由Moraitou-Apostolopoulou, M、Zervoudaki, S和Kapiris, K于2013年发布,提供了1994年9月和12月在爱琴海收集的翼足类(一种浮游软体动物)丰度数据。数据集包含了90个数据点,详细记录了这两个时间点翼足类的数量情况。此研究有助于了解气候变化对海洋生态系统中特定物种的影响。访问以下链接获取完整数据集: 请注意,直接点击上述链接将引导您至数据集的官方页面,而非直接下载页面。