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)); } }
相关推荐
Spring Boot 使用 Logback 输出日志文件 Spring Boot 提供了多种日志记录工具,包括 Logback、Log4J2 和 Java Util Logging。默认情况下,Spring Boot 使用 Logback 作为日志记录工具。在日志记录过程中,我们可以...
本文主要介绍如何在Grails3项目中配置logback,实现日志的详细配置,包括按天生成独立的日志文件、日志格式设置以及对日志文件大小的控制。 首先,logback的配置文件是logback.groovy,需要放在项目的grails-app/...
《Shiro简单登录+Logback日志记录》 在现代Web开发中,权限管理和日志记录是两个不可或缺的环节。Apache Shiro是一个强大且易用的Java安全框架,提供了认证、授权、会话管理和加密等功能,而Logback作为Log4j的替代...
分享的文件包括Logback的相关jar包和核心配置文件。 Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为...
这个压缩包包含了实现 Logback 功能所需的几个关键组件,以及一个配置文件,使得用户能够方便地管理和记录应用程序的日志信息。 1. **logback-core-1.2.3.jar**: 这是 Logback 的核心库,包含了日志记录的基本...
标题中的“将Logback日志输出到websocket”指的是利用Logback这一强大的日志框架,结合WebSocket技术,实现实时的日志传输。Logback是Java世界中广泛使用的日志记录工具,它提供了高效的日志记录功能,而WebSocket则...
### Logback日志配置详解 #### 一、Logback简介 Logback 是一款非常流行的 Java 日志框架,它由 Ceki Gülcü 开发并维护,作为 log4j 的一个优秀替代品出现。Logback 相对于 log4j 有着更好的性能表现,并且拥有...
总结起来,通过合理的Logback配置,我们可以实现日志的分类存储,提高日志输出的性能,并有效管理日志文件。这不仅有利于日常的开发调试,也能在系统出现问题时提供宝贵的线索,帮助我们快速定位和解决问题。
logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties
总结来说,`logback` 是一个强大的日志框架,通过配置 `logback.xml` 文件,我们可以控制日志记录的方方面面,包括日志级别、输出目的地、格式和过滤规则。在实际项目中,合理地配置 logback 能够帮助我们更好地管理...
在使用Logback时,你需要创建一个配置文件(通常是`logback.xml`或`logback.groovy`),该文件定义了日志的级别、输出目的地(如控制台、文件、数据库等)、布局样式和过滤器。配置的灵活性是Logback的一大优点,你...
关闭HttpClient日志的logback文件
* `<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">`:定义了日志文件的回滚策略,按照天回滚日志文件。 * `<encoder>`:定义了日志的编码格式。 * `<filter class="ch.qos.logback....
**Logback日志框架概述** Logback 是一个用于日志记录的开源框架,由 Ceki Gülcü(SLF4J 的创始人)开发。它是 log4j 的后继者,旨在提供更高的性能、更灵活的配置以及更好的可扩展性。Logback 主要由三部分组成...
日志文件:日志概念、LogBack日志技术的概述、使用、logback.xml配置文件详解
日志归档是LogBack的另一大特色,通过`TimeBasedRollingPolicy`可以设置日志文件按日期滚动,避免单个日志文件过大。同时,`SizeAndTimeBasedFNATP`策略允许在文件大小达到一定限制时进行滚动。 在分布式系统中,...