eslf4j(expand slf4j)是基于slf4j的一个扩展工具包,主要用于解决线上日志的bug定位问题。
对于大并发的网站,定位bug一直是个头疼的问题,为了定位问题而记录大量的debug或info日志,很可能会影响性能,而且大量的日志对于日志分析也很不友好,还会占用大量磁盘空间;所以很多人的选择是启用error级别的日志,但是在这种情况下,如果线上出现了bug,往往只有一条错误日志,这对于定位问题几乎没有任何帮助,因为导致这个error往往是由于上下文的一个或几个错误数据或操作导致的,而上下文的info或debug日志并没有输出。
eslf4j能够控制打印上下文日志,比如可以定义线上日志的级别为error以输出最少的日志,并且配置eslf4j使得一旦出现error,能同时打印出上下文的info或者debug信息。这样既能保证性能,也方便定义问题。
eslf4j配置:
count=100
buffersize=10m
minthreshold=debug
filter=com.jd.o2o.filter.Null1Filter
filter=com.jd.o2o.filter.Null2Filter
memorymanager=com.jd.o2o.memory.NullMemoryManager
count为上下文的日志数量,必须配置(否则可能会造成内存泄露,这跟线程连接池和ThreadLocal的实现有关,就不详解了);比如这里配置为100,表示一旦打印一条日志,会同时打印出该条日志前的100条日志。
buffersize为eslf4j缓存的日志所占用的空间,必须配置,当缓存达到配置的大小时就会使用配置的memorymanager来释放内存;这里配置的buffersize为10m,表示缓存最多会占用10m内存,另外支持单位b(比特),k(kb),g(gb)
minthreshold为缓存的最低闸值,必须配置,支持all,trace,debug,info,warn,error,fatal和off;比如这里配置为debug,只有级别大于或等于debug的日志才会被缓存并打印出来。
filter是日志过滤器,是一个扩展点,可以配置也可以不配置,当然也可以配置多个;filter需要实现com.jd.o2o.core.filter.Filter接口,而且需要一个无参构造器;filter会在日志被缓存前调用,可以自处理日志。
memorymanager用于管理内存,也是一个扩展点,可以配置也可以不配置,memorymanager需要实现com.jd.o2o.core.memory.IMemoryManager接口,而且需要一个无参构造器,如果不配置会默认使用com.jd.o2o.core.memory.impl.DefaultMemoryManagerImpl来管理内存,memorymanager会在日志缓存达到buffersize时调用来释放内存。
eslf4j demo:
线上日志级别为error,eslf4j配置的count为100,minthreshold为debug;假设活动线程数为1000,error错误率为1/1000;当一个线程出现error时,会打印出该线程下出现该error的前100条debug级别或debug级别以上的日志;而其它999个线程日志都不会输出。
eslf4j的maven项目托管在[url]https://github.com/xionghuiCoder/eslf4j[/url]。 [b][size=large]1、eslf4j介绍[/size][/b] eslf4j(expand slf4j)主要用于解决线上日志的bug定位问题。 对于大并发的网站,为了保证性能,往往设置日志级别为error,但是在这种情况下,如果线上出现了bug,往往只
扩展工具为外业精灵提供的额外使用工具,这些工具可以提供一些更加便捷的功能,在后续的版本中会更新更多的工具提供使用。 实验室 点击主界面中左上方菜单图标可打开用户信息侧边栏,点击侧边栏中的设置图标可跳转至设置页面: 设置页面内,点击实验室选项可跳转至实验室页面。 实验室页面主要包含:路径规划模式、绘制点位吸附、标注名显示、地图缩放、电子罗盘、
apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。 因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd必须内建了mod_so模块。apxs工具能自动探测是否具备这样的条件,你也可以自己用这个命令手动探测:
有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava提供了若干工具方法,以便让类似的工作变得更简单。 Forwarding Decorators 针对所有类型的集合接口,Guava都提供了Forwarding抽象类以简化装饰者模式的使用。 Forwarding抽象类定义了一个抽象方法:del
Electron supports Chrome DevTools extensions, which can be used to extend the ability of Chrome's developer tools for debugging popular web frameworks. 使用工具加载 DevTools 扩展 加载 DevTools 扩展的最简单方法是使用第三方工具,
工具集和扩展为 Entity Framework Core 提供了额外的功能。 扩展是由各种资源构成的。并非所有的扩展都被作为 Entity Framework Core 项目的一部分来维护。当考虑第三方扩展的时候,一定要评估其质量、许可、支持情况等等以确保它们符合你的需求。
Electron支持Chrome DevTools 扩展程序,可增强开发工具调试流行web框架的能力 DevTools Extension Electron supports the Chrome DevTools Extension, which can be used to extend the ability of devtools for debugging popular web fra
我希望能够在我的应用程序中使用此颜色选择器: http://wpftoolkit.codeplex.com/wikipage?title=ColorPicker 我正在使用安装了. NET 4的Visual Studio 2010 Ultimate。我正在用C#和WPF(XAML)编码。 到目前为止我所做的: > 试图使用 谷歌搜索解决方案、教程或示例,但没有取得太大成功。 请解释扩展WPF工具包
PHP-X是一个基于PHP ZendVM的C++封装层,可以基于PHP-X开发PHP扩展、C++嵌入PHP、PHP SAPI等程序。PHP-X可以大大降低PHP内核扩展开发的难度,提升效率。 开源中国码云:http://git.oschina.net/swoole/PHP-X Github仓库:https://github.com/swoole/PHP-X QQ群:376696453 环境依赖 P