(日志管理-2)slf4j+logback日志框架剖析
来源:互联网 发布:云计算安全问题解决 编辑:程序博客网 时间:2024/06/05 09:18
如何从缤纷复杂的日志系统世界筛选出适合自己的日志框架以及slf4j+logback的组合美妙之处?此文可能有帮助
为什么选择slf4j+logback日志框架
如果是在一个新的项目中建议使用Slf4j与Logback组合,这样有如下的几个优点。
- Slf4j实现机制决定Slf4j限制较少,使用范围更广。由于Slf4j在编译期间,静态绑定本地的LOG库使得通用性要比Commons logging要好。
- Logback拥有更好的性能。Logback声称:某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在Logback中需要3纳秒,而在Log4J中则需要30纳秒。LogBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的。
- Commons Logging开销更高 在使Commons Logging时为了减少构建日志信息的开销,通常的做法是:
if(log.isDebugEnabled()){ log.debug("User name: " + user.getName() + " buy goods id :" + good.getId());}
在Slf4j阵营,你只需这么做:
log.debug("User name:{} ,buy goods id :{}", user.getName(),good.getId());
也就是说,slf4j把构建日志的开销放在了它确认需要显示这条日志之后,减少内存和cpu的开销,使用占位符号,代码也更为简洁
- Logback文档免费。Logback的所有文档是全面免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档。
使用slf4j+logback
选择jar包
分析jar包
logback主要由三个部分组成:logback-core、logback-classic、logback-access。
- logback-core是其他模块的基础设施,其他模块基于它构建。
- logback-classic时log4j的一个改进版,它完整实现了SLF4J。
- logback-access主要作为一个与Servlet容器交互的模块,比如tomcat或者jetty,提供一些与HTTP访问相关的功能。
配置文件解析
自动重新加载
<?xml version="1.0" encoding="utf-8"?><configuration scan="true" scanPeriod="10 seconds"> ...</configuration>
appender
Appender是configuration的子节点,是负责写日志的组件。常用的Appder有三个:ConsoleAppender、FileAppende、RollingFileAppder,它们来自同一个超类OutputStreamAppender。RollingFileAppender需要搭配相应的滚动策略(rolliingPolicy)和触发策略(tripggringPolicy)使用。
<?xml version="1.0" encoding="utf-8"?><configuration scan="true" scanPeriod="10 seconds"> <!--控制台日志--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <root level="info"> <appender-ref ref="console"/> </root></configuration>
代码应用测试
private final static Logger _logger = LoggerFactory.getLogger(CollectionHelper.class) ;/** * @description <p>处理的集合元素越多,去重速度更快,10万元素100毫秒,10个元素200毫秒</p> * @param list * @return * @returnType List<Object> * @author heshiyuan @date 2017年3月16日 下午7:37:53 * @path javase-common/com.javase.util/CollectionHelper.java * @date 2017年3月16日 下午7:37:53 * @price ¥:三毛三 * @copyright 如有复制粘贴请通知本人或者捐赠,微信号:hewei1109 * @email heshiyuan@chtwm.com * @callnumber 15910868535 */public static void duplicateRemoval(List<Integer> list) { _logger.info("CollectionHelper.duplicateRemoval工具类去重开始!"); long startTime = System.currentTimeMillis() ; try{ if(list == null) { _logger.info("将要去重的list集合是空,请检查参数再行调用!"); long endTime = System.currentTimeMillis() ; _logger.info("调用去重工具类耗时{}毫秒!",(endTime - startTime)); return ; } _logger.info("去重之前的集合是{}",list.toString()); list = list.parallelStream().distinct().collect(Collectors.toList()) ; _logger.info("去重之后的集合是{}",list.toString()); }catch(Exception e){ _logger.error("调用去重工具类CollectionHelper.duplicateRemoval遇到异常,异常信息:{}",e.getMessage()); throw e ; }finally{ long endTime = System.currentTimeMillis() ; _logger.info("调用去重工具类耗时{}毫秒",(endTime - startTime)); _logger.info("CollectionHelper.duplicateRemoval工具类去重结束!"); }}
最后
由于logback别的方面本次没有用到,此博客会后续维护。。。
阅读全文
0 0
- (日志管理-2)slf4j+logback日志框架剖析
- logback slf4j管理 日志
- logback+slf4j日志框架
- SLF4J+Logback 日志框架使用
- SLF4J和Logback日志框架
- SLF4J+Logback 日志框架使用
- SLF4J+Logback 日志框架使用
- java日志管理(slf4j+logback,tomcat)
- SLF4J和Logback日志框架详解
- SLF4J+Logback 日志框架配置和使用
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- Java日志框架梳理-SLF4J+logback
- JVM内幕:Java虚拟机详解
- html5粒子效果背景
- B-tree/B+tree/B*tree
- python 遍历文件夹读取文件名
- Setting up CocoaPods master repo
- (日志管理-2)slf4j+logback日志框架剖析
- 排序算法
- Linux系统怎么调整swap分区大小
- 关于android中shape的使用
- Opencv图像Mat操作
- Java高级软件工程师面试考纲
- 你正真了解C语言中的指针吗
- oracle数据库 行转列 用decode函数实现
- 数据中心的冷却中断干扰了日本的Azure Cloud云服务