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 ...
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
铅酸电池失效仿真comsol
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
springboot124中药实验管理系统设计与实现,含有完整的源码和报告文档
解除劳动合同协议书
快速过滤图像融合Matlab代码.rar
强调图像中内核形状(例如直线)的过滤器Matlab代码.rar
在内网linux服务器安装redis 在Linux环境中离线安装Redis是常见的需求,尤其是在内网服务器上,由于无法直接访问公网,我们需要提前下载Redis的源码包并手动安装。下面将详细解释如何进行这一过程。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
微信小程序StartKitw_xapp-startkit
座位选择微信小程序版本
机械臂代码_Mechanical_arm
图像分割测试视频river-light.mp4
前端分析-2023071100789
labview源码参考示例,可供参考学习使用
MPC跟踪轨迹圆形(以后轴为基准)
MATLAB代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 关键词:电动汽车 主从博弈 动态定价 智能小区 充放电优化 参考文档:《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现 仿真平台:MATLAB+CPLEX gurobi平台 优势:代码具有一定的深度和创新性,注释清晰,非烂大街的代码,非常精品 主要内容:代码主要做的是一个电动汽车充电管理和智能小区代理商动态定价的问题,将代理商和车主各自追求利益最大化建模为主从博弈,上层以代理商的充电电价作为优化变量,下层以电动汽车的充电策略作为优化变量,通过优化得出最优电价策略以及动态充电策略,代码出图效果非常好,店主已经对代码进行了深入的加工和处理,出图效果非常好,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源,联系后会直接发您资料,保证您学得会,用的起来,简直是萌新福利
springboot154基于Spring Boot智能无人仓库管理,含有完整的源码和报告文档